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

 更新时间:2020年03月05日 09:32:01   作者:命运使我们相遇  
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。这篇文章主要介绍了opencv python在视屏上截图,需要的朋友可以参考下

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月开始实现。

介绍

因为我是一个小白,所以代码就比较简单,如果有错误,希望大家可以评论下告诉我,感激。

效果

蓝色框框是我们要截下的图

在这里插入图片描述

这是截完后的图

在这里插入图片描述

代码

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 视屏截图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pygame游戏之旅 载入小车图片、更新窗口

    pygame游戏之旅 载入小车图片、更新窗口

    这篇文章主要为大家详细介绍了pygame游戏之旅的第3篇,教大家如何载入小车图片、更新窗口,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • 新手该如何学python怎么学好python?

    新手该如何学python怎么学好python?

    怎么学好python?怎么灵活应用python?
    2008-10-10
  • python 协程并发数控制

    python 协程并发数控制

    这篇文章主要介绍了python 协程并发数控制,文章基于python的相关资料展开对主题烦人详细内容介绍,需要的小伙伴可以参考一下
    2022-05-05
  • python实现在IDLE中输入多行的方法

    python实现在IDLE中输入多行的方法

    下面小编就为大家分享一篇python实现在IDLE中输入多行的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python实现简单五子棋游戏

    python实现简单五子棋游戏

    这篇文章主要为大家详细介绍了python实现简单五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • 一文教你如何使用Python绘制瀑布图

    一文教你如何使用Python绘制瀑布图

    什么是瀑布图?瀑布图用表达两个数值之间的变化过程,过程值为正的时候,向上加,过程值为负的时候向下减。本文就带大家学习一下如何用Python绘制瀑布图吧
    2023-04-04
  • 在Python的Django框架中调用方法和处理无效变量

    在Python的Django框架中调用方法和处理无效变量

    这篇文章主要介绍了在Python的Django框架中调用方法和处理无效变量的方法,是Django编程中的基础操作,需要的朋友可以参考下
    2015-07-07
  • Python tkinter常用操作代码实例

    Python tkinter常用操作代码实例

    这篇文章主要介绍了Python tkinter常用操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 浅谈tensorflow 中tf.concat()的使用

    浅谈tensorflow 中tf.concat()的使用

    今天小编就为大家分享一篇浅谈tensorflow 中tf.concat()的使用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 用python实现将数组元素按从小到大的顺序排列方法

    用python实现将数组元素按从小到大的顺序排列方法

    今天小编就为大家分享一篇用python实现将数组元素按从小到大的顺序排列方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论