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列表append和+的区别浅析
Feb 02 Python
python万年历实现代码 含运行结果
May 20 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
TensorFlow实现Logistic回归
Sep 07 Python
Python的iOS自动化打包实例代码
Nov 22 Python
python中pip的使用和修改下载源的方法
Jul 08 Python
Python寻找路径和查找文件路径的示例
Jul 10 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
python实现人机猜拳小游戏
Feb 03 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
python munch库的使用解析
May 25 Python
Golang Web 框架Iris安装部署
Aug 14 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超全局数组(Superglobals)介绍
2015/07/01 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
php时间戳转换代码详解
2019/08/04 PHP
nodejs实用示例 缩址还原
2010/12/28 NodeJs
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
JavaScript闭包详解
2015/02/02 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
Python中的__SLOTS__属性使用示例
2015/02/18 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
python批量替换多文件字符串问题详解
2018/04/22 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
大众服装店创业计划书范文
2014/01/01 职场文书
中华魂演讲稿
2014/05/13 职场文书
表彰大会策划方案
2014/05/13 职场文书
婚纱店策划方案
2014/05/22 职场文书
物业管理专业求职信
2014/06/11 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
老公保证书怎么写
2015/02/26 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript