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 27 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
flask入门之表单的实现
Jul 18 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
python处理multipart/form-data的请求方法
Dec 26 Python
python 读取Linux服务器上的文件方法
Dec 27 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
python编写函数注意事项总结
Mar 29 Python
pytorch中[..., 0]的用法说明
May 20 Python
解决pytorch 损失函数中输入输出不匹配的问题
Jun 05 Python
OpenCV-Python实现油画效果的实例
Jun 08 Python
python神经网络ResNet50模型
May 06 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脚本[带参数]的方法
2010/01/22 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
PHP 类与构造函数解析
2017/02/06 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
批处理与python代码混合编程的方法
2016/05/19 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
python对json的相关操作实例详解
2017/01/04 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
2020/03/06 Python
使用python实现名片管理系统
2020/06/18 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
python 制作磁力搜索工具
2021/03/04 Python
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
高三政治教学反思
2014/02/06 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
太行山上观后感
2015/06/05 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
创业计划书之甜品店
2019/09/18 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL