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实现telnet服务器的方法
Jul 10 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
python使用Matplotlib画饼图
Sep 25 Python
python学生信息管理系统(初级版)
Oct 17 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
树莓派+摄像头实现对移动物体的检测
Jun 22 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
浅谈Python协程
Jun 17 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 Python
python编程简单几行代码实现视频转换Gif示例
Oct 05 Python
Python 的 sum() Pythonic 的求和方法详细
Oct 16 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
克隆一个新项目的快捷方式
2013/04/10 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
php生成图片验证码的方法
2016/04/15 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
javascript prototype,executing,context,closure
2008/12/24 Javascript
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
python的几种开发工具介绍
2007/03/07 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
python 已知平行四边形三个点,求第四个点的案例
2020/04/12 Python
Python 必须了解的5种高级特征
2020/09/10 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
小学数学教学反思
2014/02/02 职场文书
外联部演讲稿
2014/05/24 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
单位工作证明范文
2014/09/14 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
搞笑结婚保证书
2015/05/08 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
Python 键盘事件详解
2021/11/11 Python
利用js实现简单开关灯代码
2021/11/23 Javascript
Python中字符串对象语法分享
2022/02/24 Python
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python