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 从远程服务器下载东西的代码
Feb 10 Python
Python中分数的相关使用教程
Mar 30 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
浅谈五大Python Web框架
Mar 20 Python
Python 处理图片像素点的实例
Jan 08 Python
pytorch 预训练层的使用方法
Aug 20 Python
Python time库基本使用方法分析
Dec 13 Python
Python concurrent.futures模块使用实例
Dec 24 Python
Tensorflow训练MNIST手写数字识别模型
Feb 13 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 Python
pandas创建DataFrame的7种方法小结
Jun 14 Python
Python基于字典实现switch case函数调用
Jul 22 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中的闭包(匿名函数)浅析
2015/02/07 PHP
Javascript学习笔记8 用JSON做原型
2010/01/11 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
python中元类用法实例
2014/10/10 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
python计算无向图节点度的实例代码
2019/11/22 Python
导致python中import错误的原因是什么
2020/07/01 Python
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
证婚人经典证婚词
2014/01/09 职场文书
创建市级文明单位实施方案
2014/03/01 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
可口可乐广告词
2014/03/20 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技