opencv python在视屏上截图功能的实现


Posted in Python onMarch 05, 2020

OpenCV简介

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python、Java and MATLAB/OCTAVE(版本2.5)的接口。这些语言的API接口函数可以通过在线文档获得。如今也提供对于C#、Ch、Ruby,GO的支持。
所有新的开发和算法都是用C++接口。一个使用CUDA的GPU接口也于2010年9月开始实现。

介绍

因为我是一个小白,所以代码就比较简单,如果有错误,希望大家可以评论下告诉我,感激。

效果

蓝色框框是我们要截下的图

opencv python在视屏上截图功能的实现

这是截完后的图

opencv python在视屏上截图功能的实现

代码

import cv2
import numpy as np
import matplotlib.pyplot as plt
i = w = h = f1 = f2 = ew = eh = 0

def cut(event, x, y, flags, param):
  global i,w,h, f1,f2,ew,eh
  img = 0
  #这一个if的作用是,当鼠标左键按下,记录开始的位置
  if event == cv2.EVENT_LBUTTONDOWN:
    f1 = 1
    h = x
    w = y
    print("w = ", w, "h = ", h)
  #这一步的作用是当鼠标滑动时,并且左键是按下的时候,就画一个框框,并且记录左后一个位置
  if event == cv2.EVENT_MOUSEMOVE and flags == cv2.EVENT_FLAG_LBUTTON:
    img = frame.copy()
    cv2.rectangle(img, (h,w), (x,y), (255,0,0),5)
    cv2.imshow("frame", img)
    f2 = 1
    eh = x
    ew = y
  #当执行了以上的两步时候,并且左键是松开的,就可以进行截出一张图片。
  if f1 == 1 and f2 == 1 and event == cv2.EVENT_LBUTTONUP:
    #下面两个if是向各个方向上截图的考虑
    if ew < w:
      w,ew = ew,w
    if eh < h:
      eh,h = h, eh
    i += 1
    f1 = f2 = 0
    img = frame[w:ew, h:eh]
    path = "C:/test2/" + "%d"%i+".jpg"
    cv2.imwrite(path,img)
#这时创建一个对像
cap = cv2.VideoCapture("C:/test2/bbb.mp4")
#这是命名一个窗口,与下面的鼠标结合,鼠标会在这个窗口中产生效果
cv2.namedWindow("frame",cv2.WINDOW_NORMAL)
cv2.setMouseCallback("frame",cut)
while True:
 #读取图片
  ret, frame = cap.read()
  if ret == False:
    break
  cv2.imshow("frame", frame)
  #如果输入'c',就进行切割。
  if cv2.waitKey(10) == ord("c"):
    cv2.waitKey(0)
  if cv2.waitKey(10) == ord('q'):
    break

注意

x,y和 w,h, 的不同,x 代表的图像的列,y是代表着行
frame[w:ew, h:eh]这个先是行,再是列。

总结

到此这篇关于opencv python在视屏上截图的文章就介绍到这了,更多相关opencv 视屏截图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
pycharm 使用心得(七)一些实用功能介绍
Jun 06 Python
Python运算符重载用法实例分析
Jun 01 Python
python利用不到一百行代码实现一个小siri
Mar 02 Python
Django与JS交互的示例代码
Aug 23 Python
Python基于回溯法子集树模板解决找零问题示例
Sep 11 Python
pyqt远程批量执行Linux命令程序的方法
Feb 14 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
python join方法使用详解
Jul 30 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
May 16 Python
python安装cx_Oracle和wxPython的方法
Sep 14 Python
python空元组在all中返回结果详解
Dec 15 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
Mar 05 #Python
python如何将两张图片生成为全景图片
Mar 05 #Python
Python 定义只读属性的实现方式
Mar 05 #Python
Pycharm中import torch报错的快速解决方法
Mar 05 #Python
Python中私有属性的定义方式
Mar 05 #Python
Python实现AI自动抠图实例解析
Mar 05 #Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
Mar 05 #Python
You might like
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
JavaScript中标识符提升问题
2015/06/11 Javascript
Javascript实现单例模式
2016/01/24 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
JavaScript &amp; jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
python脚本监控Tomcat服务器的方法
2018/07/06 Python
python配置文件写入过程详解
2019/10/19 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
医学毕业生自我鉴定
2013/10/30 职场文书
医学类个人求职信范文
2014/02/05 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
三字经教学反思
2014/04/26 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
中标通知书
2015/04/17 职场文书
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL