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 相关文章推荐
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
Android分包MultiDex策略详解
Oct 30 Python
浅谈numpy数组的几种排序方式
Dec 15 Python
Django实现分页功能
Jul 02 Python
Python设计模式之解释器模式原理与用法实例分析
Jan 10 Python
python导入模块交叉引用的方法
Jan 19 Python
Python微医挂号网医生数据抓取
Jan 24 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
详解python 降级到3.6终极解决方案
Feb 06 Python
python实现录屏功能(亲测好用)
Mar 02 Python
python实现定时发送邮件到指定邮箱
Dec 23 Python
解决Django transaction进行事务管理踩过的坑
Apr 24 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
phalcon框架使用指南
2016/02/23 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
JS 控制非法字符的输入代码
2009/12/04 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
node.js中的fs.symlinkSync方法使用说明
2014/12/15 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
javascript表单验证大全
2015/08/12 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
python中正则表达式的使用详解
2014/10/17 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
python中使用正则表达式的连接符示例代码
2017/10/10 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
如何通过python画loss曲线的方法
2019/06/26 Python
python安装gdal的两种方法
2019/10/29 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
竞选文艺委员演讲稿
2014/04/28 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
2016年母亲节寄语
2015/12/04 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python