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分割和拼接字符串
Nov 01 Python
python使用marshal模块序列化实例
Sep 25 Python
DJANGO-ALLAUTH社交用户系统的安装配置
Nov 18 Python
python协程用法实例分析
Jun 04 Python
python 打印出所有的对象/模块的属性(实例代码)
Sep 11 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
Jun 05 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
python爬虫使用scrapy注意事项
Nov 23 Python
python中用ggplot绘制画图实例讲解
Jan 26 Python
Python下opencv使用hough变换检测直线与圆
Jun 18 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
博士208HAF收音机实习报告
2021/03/02 无线电
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
js实现交通灯效果
2017/01/13 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
2017/12/28 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
Python的Flask开发框架简单上手笔记
2015/11/16 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
python实现二维插值的三维显示
2018/12/17 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
俄罗斯厨房产品购物网站:COOK HOUSE
2021/03/15 全球购物
公务员廉洁从政心得体会
2016/01/19 职场文书
提取视频中的音频 Python只需要三行代码!
2021/05/10 Python
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers