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文件夹与文件的操作实现代码
Jul 13 Python
Python实现的检测网站挂马程序
Nov 30 Python
python映射列表实例分析
Jan 26 Python
Python正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
Python 使用类写装饰器的小技巧
Sep 30 Python
python 计算两个列表的相关系数的实现
Aug 29 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
Apr 21 Python
Python 发送邮件方法总结
Aug 10 Python
python中if嵌套命令实例讲解
Feb 25 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 similar_text 字符串的相似性比较函数
2010/05/26 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
javascript的函数
2007/01/31 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
Three.js基础学习教程
2017/11/16 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
Python解惑之整数比较详解
2017/04/24 Python
Python基于whois模块简单识别网站域名及所有者的方法
2018/04/23 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
Python读写docx文件的方法
2018/05/08 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
教师自我评价范文
2013/12/16 职场文书
考试保密承诺书
2014/08/30 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
三严三实心得体会范文
2014/10/13 职场文书
部门2014年度工作总结
2014/11/12 职场文书
物流仓管员岗位职责
2015/04/01 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
格林童话读书笔记
2015/06/30 职场文书
消费者理赔投诉书
2015/07/02 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
在python中实现导入一个需要传参的模块
2021/05/12 Python