当前位置: 首页 > news >正文

opencv 控制鼠标键盘实现功能setMouseCallback

鼠标事件类型 OpenCV 支持多种鼠标事件类型,常见的包括:

cv2.EVENT_LBUTTONDOWN:左键按下

cv2.EVENT_RBUTTONDOWN:右键按下

cv2.EVENT_MBUTTONDOWN:中键按下

cv2.EVENT_LBUTTONUP:左键释放

cv2.EVENT_RBUTTONUP:右键释放

cv2.EVENT_MBUTTONUP:中键释放

cv2.EVENT_MOUSEMOVE:鼠标移动

cv2.EVENT_LBUTTONDBLCLK:左键双击

cv2.EVENT_RBUTTONDBLCLK:右键双击

cv2.EVENT_MBUTTONDBLCLK:中键双击

代码

实现点击鼠标左键不放移动可以画图,点击c键盘去掉恢复

import cv2
import numpy as np# 定义全局变量
drawing = False
ix, iy = -1, -1# 定义鼠标回调函数
def mouse_callback(event, x, y, flags, param):global drawing, ix, iyif event == cv2.EVENT_LBUTTONDOWN:drawing = Trueix, iy = x, yelif event == cv2.EVENT_MOUSEMOVE:if drawing:cv2.line(img, (ix, iy), (x, y), (0, 123, 255), 2)  # 使用 BGR 颜色格式,红色为 (0, 0, 255)ix, iy = x, yelif event == cv2.EVENT_LBUTTONUP:drawing = Falsecv2.line(img, (ix, iy), (x, y), (0, 133, 255), 2)  # 使用 BGR 颜色格式,红色为 (0, 0, 255)# 创建一个纯白底图
img = np.ones((512, 512, 3), np.uint8) * 255  # 创建一个纯白图像# 创建一个窗口
cv2.namedWindow('Image')# 设置鼠标回调函数
cv2.setMouseCallback('Image', mouse_callback)# 显示图像并等待用户交互
while True:cv2.imshow('Image', img)key = cv2.waitKey(1) & 0xFFif key == 27:  # 按下 ESC 键退出breakelif key == ord('c'):  # 'c'键清除画布img = np.ones((480, 640, 3), dtype=np.uint8) * 255# 保存图像
cv2.imwrite('output_image.jpg', img)cv2.destroyAllWindows()

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 江科大/江协科技 STM32学习笔记P24
  • 北京城市图书馆-非遗文献馆:OLED透明拼接屏的璀璨应用
  • 探索Witin-NN Tools量化开源项目:模拟神经网络映射映射到存内芯片的计算过程
  • phpmailer如何配置SSL以发送安全电子邮件?
  • Qt表格设置列宽
  • 阿贝云免费虚拟主机和免费云服务器评测
  • 【Leetcode 884 】 两句话中的不常见单词 —— 更简洁的手法
  • redis I/O复用机制
  • 【已解决】CentOS离线安装docker和docker-compose
  • 【Vue3】嵌套路由
  • html+css+js网页设计 移动端 京东6个页面
  • 如何为 Nextcloud 配置自动数据库备份 - 应用程序
  • 汇编语言:loop指令
  • 系统分析师3:嵌入式技术
  • 高级java每日一道面试题-2024年8月12日-网络篇-说一下JSONP的实现原理?
  • 4个实用的微服务测试策略
  • IndexedDB
  • JavaScript标准库系列——Math对象和Date对象(二)
  • java中具有继承关系的类及其对象初始化顺序
  • MySQL的数据类型
  • node.js
  • passportjs 源码分析
  • SegmentFault 2015 Top Rank
  • vue--为什么data属性必须是一个函数
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 关于使用markdown的方法(引自CSDN教程)
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 理解在java “”i=i++;”所发生的事情
  • 使用putty远程连接linux
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 新手搭建网站的主要流程
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 阿里云移动端播放器高级功能介绍
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • ###C语言程序设计-----C语言学习(6)#
  • #70结构体案例1(导师,学生,成绩)
  • #数据结构 笔记三
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $L^p$ 调和函数恒为零
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (19)夹钳(用于送货)
  • (Java入门)学生管理系统
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • (转)visual stdio 书签功能介绍
  • (转载)Linux 多线程条件变量同步
  • (轉)JSON.stringify 语法实例讲解
  • (轉貼) UML中文FAQ (OO) (UML)
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .net 7 上传文件踩坑