使用Python和OpenCV捕获鼠标事件,并裁剪图像
使用Python和OpenCV捕获鼠标事件,并裁剪图像
- 1. 效果图
- 2. 源码
- 参考
这篇博客将介绍如何使用Python和OpenCV捕获鼠标事件。还演示了如何快速裁剪和提取图像区域,这在为自己的自定义对象检测器创建训练数据时特别有用。
该示例将点击图片,并拖动一个矩形的兴趣区(ROI),然后从图像中裁剪出来。
1. 效果图
拿我最喜欢的小林老师的漫画图,截图图像中的薰衣草图片ROI,并展示,效果图如下:
在截一下郁金香,郁金香ROI下图右侧~~
2. 源码
# 使用Python,OpenCV捕获鼠标单击事件
# USAGE
# python click_and_crop.py --image lin_image.jpg# 导入必要的类
import argparse
import cv2
import imutils# 初始化参考点列表和布尔值标志:是否正在执行裁剪
refPt = []
cropping = False# 点击并裁剪ROI区域
# -events 鼠标事件(如按下鼠标左键,释放鼠标左键,鼠标移动等)
# -x x坐标
# -y y坐标
# -flages params 其他参数
def click_and_crop(event, x, y, flags, param):# 获取全局变量的引用global refPt, cropping# 如果鼠标左被单击,记录(x,y)坐标并显示裁剪正在进行if event == cv2.EVENT_LBUTTONDOWN:refPt = [(x, y)]cropping = True# 检测鼠标左键是否释放elif event == cv2.EVENT_LBUTTONUP:# 记录结束(x,y)坐标,并显示裁剪结束refPt.append((x, y))cropping = False# 在感兴趣区域记录矩形区域cv2.rectangle(image, refPt[0], refPt[1], (0, 255, 0), 2)cv2.imshow("image", image)# 构建命令行参数及解析
# -image 原始图像的路径
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True, help="Path to the image")
args = vars(ap.parse_args())# 加载图像,并复制,设置鼠标回调函数
image = cv2.imread(args["image"])
image = imutils.resize(image, width=500)
clone = image.copy()
cv2.namedWindow("image")
cv2.setMouseCallback("image", click_and_crop)# 保持循环直至按下‘q’键
while True:# 展示图像并等待按下键cv2.imshow("image", image)key = cv2.waitKey(1) & 0xFF# 如果按下‘r’键,则重置裁剪区域if key == ord("r"):image = clone.copy()# 按下‘q’键,跳出循环elif key == ord("q"):break# 如果参考点列表里有俩个点,则裁剪区域并展示
if len(refPt) == 2:roi = clone[refPt[0][1]:refPt[1][1], refPt[0][0]:refPt[1][0]]cv2.imshow("ROI", roi)cv2.waitKey(0)# 关闭所有打开的窗口
cv2.destroyAllWindows()
参考
- https://www.pyimagesearch.com/2015/03/09/capturing-mouse-click-events-with-python-and-opencv/
使用Python和OpenCV捕获鼠标事件,并裁剪图像相关推荐
- 使用Python,OpenCV捕获关键事件,并进行视频剪辑
使用Python,OpenCV捕获关键事件,并进行视频剪辑 1. 效果图 2. 原理 2.1 步骤 2.2 如何找到HSV空间值呢? [[[60 255 255]]] 3. 源码 3.1 keycli ...
- Python机器视觉--OpenCV入门--鼠标事件与TrackBar控件(含小项目:OpenCV调色板)
1.鼠标事件与TrackBar控件 1.1控制鼠标 OpenCV允许我们对窗口上的鼠标动作做出响应. setMouseCallback(winname, callback, userdata) win ...
- 使用Python,OpenCV和Scikit-Image检测低对比度图像
使用Python,OpenCV和Scikit-Image检测低对比度图像 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何使用Python,OpenCV和Scikit-Image检测低对 ...
- python八角图形绘制_(Python)从零开始,简单快速学机器仿人视觉Opencv—第四节:OpenCV处理鼠标事件...
准备工作 使用工具:Python3.5 涉及包:cv2 numpy 涉及函数 函数:cv2.setMouseCallback() 任务开始 简单的程序,在图片上双击过的位置绘制一个圆圈 任务1.创建鼠 ...
- Python Opencv 实现鼠标事件(包含一个练习)——事件触发讲解·以及鼠标回调函数的实现
文章目录 鼠标事件概述 鼠标事件发生的结构 鼠标回调函数的标准格式 opencv下包含的所有事件--包含flag和event(可以看一下,熟悉常见事件范围) 鼠标事件的实现函数 一个完整的鼠标事件由一 ...
- WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件
在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件. 例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开. 在这个过程中 ...
- Python监听键盘和鼠标事件,并发送内容至邮箱!
一. 环境以及工具 环境:win10,Python3.6 工具:JetBrains PyCharm 2018.1.4 二. 使用的第三方库: import os import smtplib #发送邮 ...
- opencv控制鼠标事件
1.基础知识和API OpenCV允许我们对窗口上的鼠标动作做出响应.回调函数,就是执行以后会执行这个函数 cv2.setMouseCallback(winname, callback, userda ...
- 捕获鼠标事件-JavaScript入门基础(005)
为页面增加与用户的交互是JavaScript的基本功能之一.那么我们如何能知道用户什么时候单击了鼠标,什么时候按下了键盘呢? 以上特定动作发生之后,会触发事件.通过事件处理器,我们就可以处理相应的事件 ...
最新文章
- pageadmin CMS网站建设教程:站点添加自定义字段
- 数据暑假实习面试_面试数据科学实习如何准备
- 自动驾驶——多传感器融合的学习笔记
- centos7 如何重启web服务_如何重启web服务器
- python中类的构成_Python中类型关系和继承关系实例详解
- c语言获取栈可用大小,[求助]求教各位大神如何获得C语言函数体的大小?
- 软件开发所需要的十三个文档
- Android 使用 Gradle 构建时,出现 Crunching Cruncher xxx.9.png failed 问题的解决方法
- AURIX TriCore学习笔记四:LwIP裸机移植
- Request库的相关用法
- Thunderbolt4,雷电4与USB4
- FCoin“出事”后,团队关键人物回复了!
- lcs算法c语言代码,LCS算法
- 联发科技与Orange合作加速物联网设备普及
- 笔耕不辍,学习习惯?兴趣爱好?源于对真知的热爱?
- 没有内存,怎么还能跑程序呢
- uniapp自定义tabbar必看
- 问财爬虫Python第三方包,仅供学习使用
- android点对点 sdk,Client(SDK)_开发文档_容联云通讯
- netstat输出内容详解
热门文章
- 2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️
- 2021年大数据环境搭建(一):​​​​​​​​​​​​​​​​​​​​​Hadoop编译
- Django Request对象3.3
- Android 监听多个Spinner 的点击事件
- Android TextView 数字后面追加2个0 或者保留小数点后面2位
- Android include 标签使用
- ASP.NET MVC 2示例Tailspin Travel
- SpringBoot02_构建rest工程完成第一个controller类
- JS中的call()方法和apply()方法用法总结
- YML(2)yml 语法