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通过zlib实现压缩与解压字符串的方法
Nov 19 Python
python实现字符串加密 生成唯一固定长度字符串
Mar 22 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
Python 实用技巧之利用Shell通配符做字符串匹配
Aug 23 Python
Python读取YAML文件过程详解
Dec 30 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 Python
Python 面向对象之类class和对象基本用法示例
Feb 02 Python
python 使用cx-freeze打包程序的实现
Mar 14 Python
Django Form设置文本框为readonly操作
Jul 03 Python
python如何进入交互模式
Jul 06 Python
python如何读取和存储dict()与.json格式文件
Jun 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
xml+php动态载入与分页
2006/10/09 PHP
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
php 错误处理经验分享
2011/10/11 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
php和nginx交互实例讲解
2019/09/24 PHP
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
JS实现京东商品分类侧边栏
2020/12/11 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python实现简单的四则运算计算器
2016/11/02 Python
python操作列表的函数使用代码详解
2017/12/28 Python
python如何基于redis实现ip代理池
2020/01/17 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
英国足球店:UK Soccer Shop
2017/11/19 全球购物
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
前台文员个人求职信范文
2014/01/05 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
小学捐书活动总结
2014/07/05 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
单位租房协议书范本
2014/12/04 职场文书
年度考核登记表个人总结
2015/03/06 职场文书
2015年度女工工作总结
2015/10/22 职场文书