网络编程
位置:首页>> 网络编程>> Python编程>> opencv python在视屏上截图功能的实现

opencv python在视屏上截图功能的实现

作者:命运使我们相遇  发布时间:2021-04-14 04:00:30 

标签:python,opencv,视屏,截图

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]这个先是行,再是列。

来源:https://blog.csdn.net/weixin_43321550/article/details/104640533

0
投稿

猜你喜欢

  •  大家都出书,我也很幸运的有了这本书,不过一本书的好与坏,错与对都是在于一个人的理解,web标准这个东西主要还是大家理解,理解的深
  • '****'函数名称: strReplace(Str)'函数功能: 过滤单引号'参数说明: Str 
  • 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致
  • 摘要: 阐述一种全新的ASP模板引擎,实现代码(逻辑)层与HTML(表现)层的分离.这种模板实现方法避免了一般ASP模板加载模板文件(加载组
  • 本文详细介绍了asp中如何使用sql语句删除数据库中的记录,初学asp者来看看!1,首先要明确删除哪条记录无非还就是SQL语句了,比如对应到
  • 随着十几年前“用户体验”这一概念的提出,“用户研究”也逐渐发展成为一个新兴的行业。那么,“用户研究”究竟包括哪些工作内容,在企业中如何开展,
  • PHP 文件上传通过 PHP,可以把文件上传到服务器。本章节实例在 test 项目下完成,目录结构为:test|-----upload&nb
  • 很早之前就在PJ的blog上看到可以用VS2005调试ASP程序,但是没有写出具体的步骤,后来一次偶尔也让我找到了方法,但是一直没把它写出来
  • CSS的学习和其他的学习一样,都需要特定的方法才能比较快的去掌握它.要想掌握CSS, 首先要学会HTML,我刚开始是从零开始学习的
  • 介绍我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法。按照微软所述,通过宿主
  • 在网站或软件的策划和设计过程中,我们经常听到这样的讨论:“这个功能设计得太重了”又或“我们希望能够处理得轻一些”。似乎轻设计是时下炙手可热的
  • 由 John Resig 的 How JavaScript Timers Work 可以知道,现有的 JavaScript 引擎是单线程处理
  • 一切从一个糟糕的浏览器开始,它完全不支持 XHTML。什么是 MIME Type? 为什么这么说呢?首先,我们要了解浏览器是如何处理内容的。
  • ASP与存储过程(Stored Procedures)的文章不少,但是我怀疑作者们是否真正实践过。我在初学时查阅过大量相关资料,发现其中提供
  • 最近自己很关注文档的撰写,包括如何制作PPT。因为发现自己在表达想法和观点的时候,从自己的语言到文字都异常的欠缺。常常需要“高人”帮忙翻译。
  • 原始结构:Column1 Column2----------- ----------1 A1 B2 C2 D2 E3 F查询效果:Colum
  • 希望这是window.open()打开fullscreen全屏窗口时无提示关闭父窗口的完美解决方案:我们通常都是用控件法,在父窗口文件里放一
  • 如果网站只开了80端口,你会发现下面的方法是比较有用的,其中用的方法几乎都不是我发现的,文总包括一些注入时的个人经验和技巧方法可以说有4种(
  • 方法一.Image {      max-width:600px;height:
  • 今天在玩 google earth 4.0b,发现 Print Screen 下来的图片很大,如果直接放在网页上,因为尺寸太大又不合适,又不
手机版 网络编程 asp之家 www.aspxhome.com