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中实现三目运算的方法
Jun 21 Python
python 写入csv乱码问题解决方法
Oct 23 Python
Python实现多并发访问网站功能示例
Jun 19 Python
Python+Django搭建自己的blog网站
Mar 13 Python
Python获取指定字符前面的所有字符方法
May 02 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
Python assert关键字原理及实例解析
Dec 13 Python
python递归调用中的坑:打印有值, 返回却None
Mar 16 Python
python数字图像处理之图像的批量处理
Jun 28 Python
Python创建SQL数据库流程逐步讲解
Sep 23 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实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
JavaScript 大数据相加的问题
2011/08/03 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
JS实现合并json对象的方法
2017/10/10 Javascript
详解Js中的模块化是如何实现的
2017/10/18 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
python插入排序算法实例分析
2015/07/03 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
2018/02/03 Python
python opencv实现运动检测
2018/07/10 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
python分布式编程实现过程解析
2019/11/08 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
售票员岗位职责
2015/02/15 职场文书
经典祝酒词大全
2015/08/12 职场文书
Python中异常处理用法
2021/11/27 Python
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers