Opencv笔记(五)——把鼠标当画笔
学习目标:
- 学习使用 OpenCV 处理鼠标事件
- 学会使用函数cv2.setMouseCallback()
简单演示:
首先我们来创建一个鼠标事件回调函数,但鼠标事件发生是他就会被执行。鼠标事件可以是鼠标上的任何动作,比如左键按下,左键松开,左键双击等。该函数还提供了鼠标点击的位置。
Event | 中文释义 |
---|---|
cv2.EVENT_MOUSEMOVE | 鼠标移动 |
cv2.EVENT_LBUTTONDOWN | 左键点击 |
cv2.EVENT_RBUTTONDOWN | 右键点击 |
cv2.EVENT_MBUTTONDOWN | 中间点击 |
cv2.EVENT_LBUTTONUP |
左键释放 |
cv2.EVENT_RBUTTONUP | 右键释放 |
cv2.EVENT_MBUTTONUP | 中间释放 |
cv2.EVENT_LBUTTONDBLCLK | 左键双击 |
cv2.EVENT_RBUTTONDBLCLK | 右键双击 |
cv2.EVENT_MBUTTONDBLCLK | 中间双击 |
import numpy as np
import cv2
def draw_circle(event,x,y,flags,param):if event==cv2.EVENT_LBUTTONUP :cv2.circle(img,(x,y),20,(255,0,0),-1)
img = np.zeros((512,512,3), np.uint8)
cv2.namedWindow('opencv')
cv2.setMouseCallback('opencv',draw_circle)
while(1):cv2.imshow('opencv',img)if cv2.waitKey(1) & 0xFF == ord('q'):break
cv2.destroyAllWindows()
- 先创建一个鼠标事件回调函数,event表示鼠标事件,x,y表示鼠标事件的位置,flags代表鼠标拖拽事件。自己在函数中定义事件的类型,上述代码定义的是左键释放画圈。
- cv2.setMouseCallback('Window_name',def),第一个参数是窗口名,第二个参数是用于处理的回调函数。
高级演示:
用鼠标左键点击后拖动画矩形,按下m建变换模式,改画圆。
import numpy as np
import cv2drawing = False
mode = True
ix,iy = -1,-1def draw_circle(event,x,y,flags,param):global drawing,mode,ix,iyif event==cv2.EVENT_LBUTTONDOWN:drawing = Trueix,iy = x,yelif event==cv2.EVENT_MOUSEMOVE :if drawing == True:if mode == True:cv2.rectangle(img,(ix,iy),(x,y),(255,0,0),2)else:cv2.circle(img,(x,y),50,(0,255,0),3)elif event == cv2.EVENT_LBUTTONUP:drawing = Falseimg = np.zeros((512,512,3), np.uint8)
cv2.namedWindow('opencv')
cv2.setMouseCallback('opencv',draw_circle)
while(1):cv2.imshow('opencv',img)if cv2.waitKey(1) & 0xFF == ord('q'):breakelif cv2.waitKey(1) &0xFF == ord('m'):mode = not mode
cv2.imwrite('/home/wl/1.jpg',img)
cv2.destroyAllWindows()
转载于:https://www.cnblogs.com/longwhite/p/10397778.html
Opencv笔记(五)——把鼠标当画笔相关推荐
- opencv学习笔记五--文件扫描+OCR文字识别
opencv学习笔记五--文件扫描+OCR文字识别 文件扫描 定义函数 边缘检测 获取轮廓 变换 OCR文字识别 环境配置 代码 文件扫描 # 导入工具包 import numpy as np imp ...
- Java之GUI编程学习笔记六 —— AWT相关(画笔paint、鼠标监听事件、模拟画图工具)
Java之GUI编程学习笔记六 -- AWT相关(画笔paint) 参考教程B站狂神https://www.bilibili.com/video/BV1DJ411B75F 了解paint Frame自 ...
- opencv04:鼠标作为画笔以及轨迹栏作为调色板
目标 了解如何在OpenCV中处理鼠标事件 cv2.setMouseCallback() 了解将轨迹栏固定到OpenCV窗口 cv2.getTrackbarPos() cv2.createTrackb ...
- OpenCV 笔记 -- 边缘检测(Sobel、Laplace、Canny)
OpenCV 笔记 – 边缘检测(Sobel.Laplace.Canny) 参考文档 一.Sobel 算子 1.简介 Sobel 算子是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度近似值.在 ...
- 《MFC游戏开发》笔记五 定时器和简单动画
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9332377 作者:七十一雾央 新浪微博:http:// ...
- Python学习笔记五:控制语句
Python学习笔记五:控制语句 Pycharm 开发环境的下载安装配置_项目管理 控制语句 Pycharm 开发环境的使用 Pycharm 下载和安装 激活和选择不同UI 风格 创建项目和初始化配置 ...
- Opencv 笔记5 边缘处理-canny、sobel、Laplacian、Prewitt
一.边缘检测概述 边缘检测是计算视觉中的基本问题,边缘检测的目的是标识图像中亮度变换明显的点.边缘检测大幅度的减少了图像的数据量(分为两种:灰度图像边缘检测和彩色图像边缘检测),并且剔除了不相关的信息 ...
- OpenCV笔记—投影与三维测量
OpenCV笔记-投影与三维测量 一.立体成像 1.1 概述 1.2 三角测量 1.3 对极几何 1.4 本征矩阵与基本矩阵 1.4计算极线 1.5立体标定 1.6立体校正 1.7 校正映射 1.8 ...
- Mouse as a Paint-Brush - 鼠标作为画笔
Mouse as a Paint-Brush - 鼠标作为画笔 OpenCV documentation index - OpenCV 文档索引 https://www.docs.opencv.org ...
- OpenCV_005-OpenCV 鼠标作为画笔
本文主要内容来自于 OpenCV-Python 教程 的 OpenCV 中的 GUI 功能 部分,这个部分的主要内容如下: 图像操作入门 学习加载一幅图像,显示它,并保存它 视频入门 学习播放视频,从 ...
最新文章
- 封装一个计时器,记录页面的停留时间
- ASP.NET生成静态页面的方法
- 每日一皮:你不看我的接口文档就乱调的吗?
- 如何复制百度文库中的文章
- 腾讯云连续四年登上KVM开源贡献榜,两项技术获评年度核心突破
- 解决UbuntuE: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
- 如何用web3.js在以太坊区块链上保存数据?
- vue中渲染对象中属性时显示未定义_揭开 vue 背后的秘密(1)
- P2770 航空路线问题(网络流)
- html select 文字居中显示图片,html原生select改造箭头及文字左右居中的一种办法...
- CentOS下yum安装mcrypt错误:No package php-mcrypt available.解决方法
- python3解析库pyquery
- MyBatis3与Spring3的整合配置(初级篇)
- win10无法安装软件,点击大部分exe文件无反应,无提示(安装了火绒)
- Win10 CMD命令大全—超好用快捷键
- hd6630m可以玩lol吗_《LOL》流畅玩!Intel HD620核显性能实测
- latex 显示黑色的点命令 black dot.
- 前端职业规划 - 写给年轻的前端韭菜们
- Chrome游览器改变SameSite设置
- lua脚本php,phpStudy中起用lua脚本_PHP教程