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之开始真正编程
Sep 12 Python
Python set常用操作函数集锦
Nov 15 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
浅谈numpy数组的几种排序方式
Dec 15 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
在Python中调用Ping命令,批量IP的方法
Jan 26 Python
Python实现字符串匹配的KMP算法
Apr 04 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
Pytorch数据拼接与拆分操作实现图解
Apr 30 Python
python中Pexpect的工作流程实例讲解
Mar 02 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 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
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
走出JavaScript初学困境—js初学
2008/12/29 Javascript
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
微信小程序实现列表下拉刷新上拉加载
2020/07/29 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
[40:01]OG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
基于python编写的微博应用
2014/10/17 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
python 基础教程之Map使用方法
2017/01/17 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
商场消防管理制度
2014/01/12 职场文书
企业军训感言
2014/02/08 职场文书
保安部任务及岗位职责
2014/02/25 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
解放思想演讲稿
2014/09/11 职场文书
打架检讨书范文
2015/01/27 职场文书
个人求职意向书
2015/05/11 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android
SQL Server Agent 服务无法启动
2022/04/20 SQL Server