树莓派4B_OpenCv学习笔记5:读取窗口鼠标状态坐标_TrackBar滑动条控件的使用
今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi)
本人所用树莓派4B 装载的系统与版本如下:
版本可用命令 (lsb_release -a) 查询:
Opencv 版本是4.5.1:
今日学习:读取窗口鼠标状态坐标_TrackBar滑动条控件的使用
目录
读取鼠标状态坐标:
鼠标回调函数中参数的值:
event参数:
flags参数:
程序编写:
效果测试图:
TrackBar滑动条控件:
程序编写:
效果测试图:
读取鼠标状态坐标:
这整个读取鼠标状态坐标过程分俩部分:
1、编写鼠标回调函数:
1)名称可以自己定义
2)有五个参数会被传入:(这五个参数供你判断用,函数自动检测参数值)
event(鼠标事件)、X、Y(坐标)、
flag(组合键值)、userdata(用户数据/可以不定义)
3) 产生鼠标状态改变事件时进入的一个回调函数
2、设置鼠标回调函数:
1)有三个参数需要传入:
Winname:(窗口名称)、callback(回调函数名称)、userdata(用户数据)
2)
鼠标回调函数中参数的值:
event
参数:
cv2.EVENT_LBUTTONDOWN
: 鼠标左键按下,整数值为1。cv2.EVENT_RBUTTONDOWN
: 鼠标右键按下,整数值为2。cv2.EVENT_MBUTTONDOWN
: 鼠标中键(如果有的话)按下,整数值为3。cv2.EVENT_LBUTTONUP
: 鼠标左键释放,整数值为4。cv2.EVENT_RBUTTONUP
: 鼠标右键释放,整数值为5。cv2.EVENT_MBUTTONUP
: 鼠标中键(如果有的话)释放,整数值为6。cv2.EVENT_MOUSEMOVE
: 鼠标移动,整数值为0。
flags
参数:
cv2.EVENT_FLAG_LBUTTON
: 鼠标左键被按下,整数值为1(通常与event
参数一起使用,不直接作为flags
的值)。cv2.EVENT_FLAG_RBUTTON
: 鼠标右键被按下,整数值为2(同样通常与event
参数一起使用)。cv2.EVENT_FLAG_MBUTTON
: 鼠标中键被按下,整数值为4(注意这与EVENT_MBUTTONDOWN
的event
值不同)。cv2.EVENT_FLAG_CTRLKEY
: Ctrl键被按下,整数值为8。cv2.EVENT_FLAG_SHIFTKEY
: Shift键被按下,整数值为16。cv2.EVENT_FLAG_ALTKEY
: Alt键被按下,整数值为32。
程序编写:
以下程序实现了
创建一个1280*640的窗口
鼠标移动、点击、抬起等按键时打印键值、坐标、Flag、usedata等数值:
# coding=utf-8 import cv2 import numpy as np#鼠标回调函数 def Mouse_Callback(event, x, y, flags, param):#左右键输出提示与键值,其余按键事件就不例举了,直接打印定义的键值了if event == cv2.EVENT_LBUTTONDOWN:print("L_Button Down {}\r\n".format(event))elif event == cv2.EVENT_RBUTTONDOWN:print("R_Button Down {}\r\n".format(event))else:print(event)#输出鼠标坐标\Flags\userdataprint("Mouse position : X :"+str(x)+" Y :"+str(y)+"\r\n")print("Flags : {}".format(flags))print(f"Userdata is{param}\r\n\r\n") #创建窗口 cv2.namedWindow("mouse",cv2.WINDOW_NORMAL) cv2.resizeWindow("mouse",1280,640)#设置鼠标回调 cv2.setMouseCallback("mouse",Mouse_Callback) #显示窗口与背景 img=np.zeros((640,1280,3),np.uint8)while True:cv2.imshow("mouse",img)key=cv2.waitKey(1)if key&0XFF==ord('q'):break#释放所有资源 cv2.destroyAllwindows()
效果测试图:
TrackBar滑动条控件:
使用TrackBar控件需要认识俩个函数:
1、createTrackbar:
1) 需要传入五个参数:
trackBarname(trackBar名称)、winname(窗口名称)、value(trackBar当前值)
count(trackBar最大值)、callback(回调函数名称)、userdata(可以为空)
2)
2、getTrackBarPos:
1) 输入参数:Trackbarname(TrackBar名称)、Winname(窗口名称)
2) 输出:滑动条当前值
3)
3、Trackbar callback回调函数:
1)传入俩参数: (这俩个参数供你判断用,函数自动检测参数值)
value(当前值)、userdata (用户数据\可以为空)
def callback_function(value, userdata=None): # 在这里处理滑动条的变化 pass
程序编写:
以下程序编写实现了:
创建一个窗口,可以通过R\G\B三个TrackBar控件实现调整窗口颜色:
# coding=utf-8 import cv2 import numpy as np#定义空回调函数 def callback(value,userdata=None):pass#创建窗口 cv2.namedWindow("TrackBar",cv2.WINDOW_NORMAL) cv2.resizeWindow("TrackBar",640,640)#创建Trackbar cv2.createTrackbar("R","TrackBar",0,255,callback) cv2.createTrackbar("G","TrackBar",0,255,callback) cv2.createTrackbar("B","TrackBar",0,255,callback)img=np.zeros((640,640,3),np.uint8)while True:cv2.imshow("TrackBar",img)#获取TrackBar的值r=cv2.getTrackbarPos("R","TrackBar")g=cv2.getTrackbarPos("G","TrackBar")b=cv2.getTrackbarPos("B","TrackBar")#使用b,g,r值设置img所有像素img[:]=[b,g,r]key=cv2.waitKey(1)if key&0XFF==ord('q'):break #释放所有资源 cv2.destroyAllwindows()
效果测试图:
就是生成了一个带三个滑块的窗口,可以通过滑动调整颜色:
相关文章:
树莓派4B_OpenCv学习笔记5:读取窗口鼠标状态坐标_TrackBar滑动条控件的使用
今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1: 今日学习:读取窗口鼠标状态坐标_TrackBar滑动条控件的使…...
c、c#、c++嵌入式比较?
嵌入式系统是专门设计用于特定用途的计算机系统,通常用于控制、监视或执行特定任务。这些系统通常具有严格的资源限制,如内存、处理器速度和能耗。因此,在选择编程语言时,需要考虑到这些限制以及系统的特性。 对于嵌入式系统&…...
如何使用ai人工智能作诗?7个软件帮你快速作诗
如何使用ai人工智能作诗?7个软件帮你快速作诗 使用AI人工智能作诗是一种创新的写作方式,以下是一些可以帮助您快速作诗的AI人工智能软件: 1.AI创作云: 这是一个AI诗歌助手应用程序,可以根据您提供的主题或关键词生成…...
调用华为API实现语音合成
目录 1.作者介绍2.华为云语音合成2.1 语音合成介绍2.2 华为语音合成服务2.3 应用场景 3. 实验过程以及结果3.1 获取API密钥3.2 调用语音合成算法API3.3 实验代码3.4 运行结果 1.作者介绍 袁斌,男,西安工程大学电子信息学院,2023级研究生 研究…...
docker实战命令大全
文章目录 1 环境准备1.1 移除旧版本Docker1.2安装工具包1.3配置docker yum源 2 安装最新docker2.1 设置开机自启docker2.2配置加速器 3 实操-镜像3.1搜索镜像3.2下载镜像3.3查看镜像3.4 删除镜像 4 实操-容器4.1运行nginx容器4.2 查看容器4.3启动容器4.5关闭容器4.6查看容器日志…...
Java线程死锁
在Java中,线程死锁通常发生在两个或更多个线程相互等待对方释放资源的情况下。以下是一个简单的Java示例,展示了如何创建线程死锁: public class DeadlockDemo {// 定义两个资源private static Object resource1 new Object();private stat…...
virtual box安装invalid installation directory
问题原因 看官方文档Chapter 2. Installation Details 第2.1.2所示,安装目录需要满足两个条件: 一是:需要安装目录的所有父目录都要满足以下访问控制条件 Users S-1-5-32-545:(OI)(CI)(RX) Users S-1-5-32-545…...
概率分析和随机算法
目录 雇佣问题 概率分析 随机算法 生日悖论 随机算法 概率分析 球与箱子 总结 雇佣问题 有n个候选人面试,如果面试者比目前雇佣者的分数高,评价更好,那么就辞掉当前雇佣者,而去聘用面试者,否则继续面试新的候…...
15_2 Linux Shell基础
15_2 Linux Shell基础 文章目录 15_2 Linux Shell基础[toc]1. shell基本介绍1.1 什么是shell1.2 shell使用方式1.3 脚本的执行方式1.4 脚本练习 2. 变量的种类2.1 自定义变量2.2 环境变量,由系统提前定义好,使用时直接调用2.3 位置变量与预定变量2.4 变量…...
Catia装配体零件复制
先选中要复制的零件 然后选中复制到的父节点才可以。 否则 另外一种方法是多实例化...
实用小工具-python esmre库实现word查找
python esmre库实现word查找 前言: 在文本中匹配特定的字符串,一般可以用普通的字符串匹配算法,KMP算法; python中提供了一个库,esmre, 通过预先将字符串存到esm对象中,利用这些字符串从候选的字符串中进行…...
SSM框架整合,内嵌Tomcat。基于注解的方式集成
介绍: SSM相信大家都不陌生,在spring boot出现之前,SSM一直是Java在web开发中的老大哥。现在虽说有了spring boot能自动整合第三方框架了,但是现在市面上任然有很多老项目是基于SSM技术的。因此,能熟练掌握SSM进行开发…...
系统架构设计师【论文-2016年 试题4】: 论微服务架构及其应用(包括写作要点和经典范文)
论微服务架构及其应用(2016年 试题4) 近年来,随着互联网行业的迅猛发展,公司或组织业务的不断扩张,需求的快速变化以及用户量的不断增加,传统的单块(Monolithic)软件架构面临着越来越多的挑战,…...
面试题:String 、StringBuffer 、StringBuilder的区别
String、StringBuffer、和StringBuilder都是用于处理字符串的操作类,但它们之间存在一些关键性的差异: 1.不可变性与可变性: String:字符串常量,是不可变的。一旦创建,其内容就不能被改变。对字符串的任何…...
TLS指纹跟踪网络安全实践(C/C++代码实现)
TLS指纹识别是网络安全领域的重要技术,它涉及通过分析TLS握手过程中的信息来识别和验证通信实体的技术手段。TLS(传输层安全)协议是用于保护网络数据传输的一种加密协议,而TLS指纹则是该协议在实际应用中产生的独特标识࿰…...
小白学RAG:大模型 RAG 技术实践总结
节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 汇总合集…...
Doris Connector 结合 Flink CDC 实现 MySQL 分库分表
1. 概述 在实际业务系统中为了解决单表数据量大带来的各种问题,我们通常采用分库分表的方式对库表进行拆分,以达到提高系统的吞吐量。 但是这样给后面数据分析带来了麻烦,这个时候我们通常试将业务数据库的分库分表同步到数据仓库时&#x…...
ModbusTCP、TCP/IP都走网线,一样吗?
在现代通信技术中,Modbus/TCP和TCP/IP协议是两种广泛应用于工业自动化和网络通信领域的协议。尽管它们都运行在网线上,但它们在设计、结构和应用场景上有着明显的区别。 Modbus/TCP协议是什么 Modbus/TCP是一种基于TCP/IP的应用层协议,它是Mo…...
网络学习(13)|Spring Boot中获取HTTP请求头(Header)内容的详细解析
文章目录 方法一:使用HttpServletRequest实现原理代码示例优点缺点适用场景 方法二:使用RequestContextHolder实现原理代码示例优点缺点适用场景 方法三:使用RequestHeader注解实现原理代码示例优点缺点适用场景 总结 在Spring Boot应用中&am…...
【漏洞复现】宏景eHR pos_dept_post SQL注入漏洞
0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景eHR pos_dept_post 接囗处存在SQL注入漏洞,未经过身份认证的远程攻击者利用此漏洞执行任意SQL指令,…...
82. 删除排序链表中的重复元素 and II
链接直达: 保留重复元素 不保留重复元素 题目: 1: 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。示例 1:输入:head [1,1,2] 输出:[1…...
C++ 判断目标文件是否被占用(独占)(附源码)
在IM软件中发起文件发送时,如果要发送的是某word文件,并且该word文件被office打开,则会提示文件正在被占用无法发送,如下所示: 那文件被占用到底是如何判断出来的呢?其实很简单,调用系统API函数CreateFile,打开该文件(OPEN_EXISTING),传入FILE_SHARE_READ共享读标记…...
计划任务 之 一次性的计划任务
计划任务 作用:定时自动完成特定的工作 计划任务的分类: (1)一次性的计划任务 例如下周三对系统的重要文件备份一次 (2)周期性重复计划任务 例如每天晚上12:00备份一次 一次性的任务计划:…...
非比较排序之计数排序
目录 一、什么是计数排序 二、思路 三、代码实现 一、什么是计数排序 计数排序是一种非比较型的排序算法,它通过统计待排序数据中每个元素出现的次数,然后根据这个次数来进行排序。计数排序的具体步骤如下: 首先找出待排序数据中的最大值…...
Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘
系列文章目录 Django入门全攻略:从零搭建你的第一个Web项目Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解Django ORM深度游ÿ…...
第7章 用户输入和 while 循环
第7章 用户输入和 while 循环 7.1 函数 input()的工作原理7.1.1 编写清晰的程序7.1.2 使用 int()来获取数值输入7.1.3 求模运算符 7.2 while 循环简介7.2.1 使用 while 循环7.2.2 让用户选择何时退出7.2.3 使用标志7.2.4 使用 break 退出循环7.2.5 在循环中使用 continue7.2.6 …...
xshell远程无法链接上VM的centos7
1、现象如下, 2.1解决办法:查证后发现这个默认的设置为vmnet0 2.2解决办法:重启win10的虚拟机网卡(先禁用再启用) 3.参考文章:Xshell连接不上虚拟机centos7_centos7的nat模式可以ping通网络,但是用xshell连…...
拥抱AI-图片学习中的卷积神经算法详解
一、定义 卷积神经算法(Convolutional Neural Networks, CNN)是深度学习领域中的一种重要算法,特别适用于处理图像相关的任务。以下是卷积神经算法的详细解释: 1. 基本概念 定义:卷积神经网络是一类包含卷积计算且具…...
超详解——深入详解Python基础语法——基础篇
目录 1 .语句和变量 变量赋值示例: 打印变量的值: 2. 语句折行 反斜杠折行示例: 使用括号自动折行: 3. 缩进规范 缩进示例: 4. 多重赋值(链式赋值) 多重赋值的应用: 5 .多…...
系统架构设计师【论文-2017年 试题2】: 论软件架构风格(包括写作要点和经典范文)
题目:论软件架构风格 (2017年 试题2) 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格 定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和 连接件类型ÿ…...
二手物品交换网站建设/网页制作网站
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。 算法描述: ⒈ 从第一个元素开始,该元素可以认为已经被排序 ⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描 …...
做房产抵押网站需要什么手续费/免费发布软文广告推广平台
随着Android系统的日益发展和日渐成熟,各种平台的合作就日渐频繁。现在主要互联网公司,都退出了各种各样的插件功能。如第三方支付,第三方联合登陆和微博分享等等功能。 近期由于业务的需要,公司提出将项目的功能打成jar包&#…...
校园二手网站开发与设计任务书/搜索引擎关键词怎么优化
限制访问网站、过滤特定网址、禁止访问指定网站的方法 此博文包含图片 (2017-12-19 16:36:25)转载▼ 许多公司出于管理员工上网行为的需要,经常限制电脑访问一些网站例如游戏网站、购物网站或是视频网站等等。网上介绍了一些方法,通过windows操作系统可以…...
2018淘宝客网站开发/网络推广策划书
GAT是MTK在DDMS基础上进行二次开发封装的一个集多种debug功能为一体的工具,除 了包含原有DDMS的功能以外还支持kernel抓取,获取native进程列表,backtrace decode,提取手机端debug信息等功能;当MTKLogger出现异常时&am…...
php 怎么做视频网站/宁波seo高级方法
Winform-Controls 0.General 属性名描述TextAlign文本对其方式Enabled是否可用visible是否可见Anchor自适应窗体实现注意事项: 当自动生成控件时候,需要设置Autozie属性为true,要不然Text显示不全。 1.Form 1.1常用属性 // 1.启动位置this.StartPosition…...
郑州网站托管公司/网站设计的流程
http://www.liangjing.org/qiyejianzhan/Ch/Net_Index.html http://www.phpweb.net/index.php转载于:https://www.cnblogs.com/liulf/archive/2011/04/01/2002745.html...