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

devtools/2024/9/20 4:06:28/ 标签: opencv, 计算机外设, 人工智能

鼠标事件类型 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()

在这里插入图片描述


http://www.ppmy.cn/devtools/96921.html

相关文章

【杂乱算法】前缀和

前缀和 文章目录 前缀和一维应用 二维 一维 一个数组prefix中,第i个元素表示nums[0]至nums[i-1]的总和,那么我们就称这个prefix数组是nums数组的前缀和。 prefix [ i ] ∑ j 0 i nums [ j ] \text{prefix}[i] \sum_{j0}^{i} \text{nums}[j] prefix[…

Android 架构模式之 MVC

目录 架构设计的目的对 MVC 的理解Android 中 MVC 的问题试吃个小李子ModelViewController 大家好! 作为 Android 程序猿,MVC 应该是我们第一个接触的架构吧,从开始接触 Android 那一刻起,我们就开始接触它,可还记得我…

手机群控爬取实战

准备工作 准备多部手机,或者模拟器然后将它们于与电脑连接,然后通过 adb 命令查看连接状态 模拟器设置链接: 写文章-CSDN创作中心 安装一个库: pip install adbutils 测试是否链接 输入 adb devices 如果结果中的第二列显示…

安卓相关环境配置

安卓相关环境配置 偶尔更新。。。 JEB(动态调试好用) JEB动态调试Smali-真机/模拟器(详细,新手必看) 夜步城 JADX官网(静态分析) https://github.com/skylot/jadx/releases/tag/v1.5.0 雷…

最新图像修复论文汇总(2024年以来)(三)

汇总了自2024年以来新提出的高质量图像修复工作,包含扩散模型、transformer、mamba、sam等最前沿的技术,其中一些是ICLR、ICML、CVPR、ECCV、ACM MM 2024年的新作。 这里是第三部分,还有两部分请参阅。 最新图像修复论文汇总(20…

redis散列若干记录

字典 redis本身使用字典结构管理数据 redis使用hash表实现字典结构 使用了什么hash算法 使用SipHash算法,该算法能有效防止Hash表碰撞,并有不错的性能 hash冲突怎么解决 使用链表法解决hash冲突 hash表如何扩容 渐进式扩容,不会引起线程长期阻…

springboot的自动配置原理

一、自动配置的原理 Spring Boot 的自动配置原理主要基于以下几个核心概念和步骤: 1. 条件注解 (Conditional Annotations):Spring Boot 使用 Conditional 系列注解来决定是否加载某个配置类或 Bean。这些注解包括但不限于: ConditionalO…

机器学习中的多模态学习

多模态学习(MultiModal Machine Learning,MMML)是一种结合多种不同类型或模态的数据和信息进行统一建模和分析的学习方法。其核心目标是通过机器学习的方法实现对多源模态信息的处理和理解。 多模态学习的基本概念与定义 多模态学习可以涵盖各种不同的数据类型,如图像、文…

ESP32CAM人工智能教学18

ESP32CAM人工智能教学18 获取数据并显示 如果我们给ESP32Cam外挂一些传感器(比如温湿度传感器、超声波测距传感器、红外人体传感器等),我们怎么把ESP32Cam捕获到的数据,传递到客户端的浏览器,并在网页index.html中显示…

Redis非关系型数据库

Redis是什么 Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key/Value)分布式内存数据 库,基于内存运行…

react18 + ts 使用video.js 直播.m3u8格式的视频流

一、安装依赖 我使用的video.js版本是8.17.3,从 Video.js 7.x 开始,HLS 支持被内置到了 Video.js 中所以不需要安装其他依赖 npm i video.js 二、创建VideoPlayer组件 import React, { useEffect, useRef } from react import videojs from video.js …

使用Webstorm进行高效的全栈JavaScript开发

使用WebStorm进行高效的全栈JavaScript开发是一个很好的选择,因为WebStorm是JetBrains出品的一款功能强大的IDE,专为前端和后端开发者设计,支持JavaScript、TypeScript、Node.js、React、Vue.js、Angular等多种技术栈。以下是一些建议&#x…

Linux软件编程day(12) -udp

任务: 1.利用套接字实现两台主机全双工通信 socket socket bind 发一次数据(数据可以随便) 接收一次数据(目的:接收发送方的IPPort) 两个任务 …

saas服务,对同一个功能,需要使用不同客户的接口。那么哪种设计模式可以解决我的问题?

Q: 我现在遇到的问题:我在做一个saas服务,现在面对多家客户。对同一个功能,需要使用不同客户的接口。比如,我的发送短信功能,每个客户的发消息接口都不同。那么哪种设计模式可以解决我的问题,可以使用c#来给…

Redis:缓存击穿,缓存穿透,缓存雪崩

缓存穿透 缓存和数据库中都没有的数据,可用户还是源源不断的发起请求,导致每次请求都会到数据库,从而压垮数据库。 这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。 *** 解决方案** 对空值进行缓存标…

应急响应:挖矿木马-实战 案例一.【Linux 系统-排查和删除】

什么是挖矿木马 挖矿木马是一种恶意软件,它在未经用户许可的情况下,利用用户的计算资源来挖掘加密货币,从而为攻击者带来非法收益。这类软件通常通过多种手段传播,例如利用系统漏洞、弱密码爆破、伪装正常软件等方法感染目标设备…

【CTF | WEB】003、攻防世界WEB题目之xff_referer

文章目录 xff_referer题目描述:解题思路:XFF与Referer基本了解1. XFF(X-Forwarded-For):2. Referer:简单总结: 解题实操: xff_referer 题目描述: X老师告诉小宁其实xff和referer是可以伪造的。…

Springboot-从服务器获取一个输入流,转成视频文件存到oss

要在Spring Boot应用中从服务器获取一个输入流,然后将该流转换为视频文件并存储到阿里云 OSS中,你可以遵循以下步骤: 设置阿里云OSS客户端:首先,你需要配置阿里云OSS客户端,以便能够上传文件到OSS。 获取输入流:使用HTTP客户端(如RestTemplate或WebClient)从服务器…

c语言通过逻辑运算符和if语句制作招聘筛选程序

c语言里逻辑运算符 && 逻辑与 a&&b || 逻辑或 a||b ! 逻辑非 逻辑运算符计算结果是true和false,其中用1表示true,0表示false 这里要制作一个招聘筛选程序&#xff0c;要求年龄大于等于25&#xff0c;身高不低于1米7 代码如下 #include<s…

4.4、配置交换机vlan

一、配置前的碎碎恋 前面大致了解了二层交换机的一些缺点&#xff0c;还有什么是vlan&#xff0c;不同vlan之间的通信。 接下来看看配置交换机vlan用到哪些命令&#xff1a; 1.进入全局配置模式 Switch> enable Switch# configure terminal Switch(config)# 2. 创建VLAN…