opencv学习笔记(2)
设置鼠标回调函数
setMouseCallback(winname, callback, userdata)
winname:窗口名字
callback:回调函数
userdata:传回callback中
callback(event, x, y, flags,userdata)
event:鼠标事件
x: 鼠标的x坐标
y: 鼠标的y坐标
flags:鼠标键和组合键
userdata:setMouseCallback传回的值
import cv2
import numpy as np#鼠标回调函数
def mouse_callback(event, x, y, flags, userdata):print(event, x, y, flags, userdata)#mouse_callback(1, 100, 100, 16, "666")cv2.namedWindow('video', cv2.WINDOW_NORMAL)
cv2.resizeWindow('video', 640, 360)#设置鼠标回调
cv2.setMouseCallback('video', mouse_callback,"123")img = np.zeros((360, 640, 3), np.uint8)
while True:cv2.imshow('video', img)#cv2.resizeWindow('video', 640, 360)if cv2.waitKey(0) & 0xff == ord('q'):breakcv2.destroyAllWindows()
如何使用OpenCV中的TrackBar控件
createTrackbar(trackbarname, winname,value, count, callback, userdata)
trackbarname:TrackBar控件的名字
winname:窗口的名字
value:trackbar当前值
count:最小值为0, 最大值为count
callback:回调函数
userdata:传给回调函数的值
getTrackbarPos(trackbarname, winname)
trackbarname:TrackBar控件的名字
winname:窗口的名字
输出当前值
import cv2
import numpy as npdef callback():pass#创建窗口
cv2.namedWindow('trackbar', cv2.WINDOW_NORMAL)#创建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((480, 640, 3), np.uint8)
while True:#获取当前trackbar的值r = cv2.getTrackbarPos('R', 'trackbar')g = cv2.getTrackbarPos('G', 'trackbar')b = cv2.getTrackbarPos('B', 'trackbar')img[:] = [b, g, r]cv2.imshow('trackbar', img)if cv2.waitKey(10) & 0xff == ord('q'):break
cv2.destroyAllWindows()
OpenCV的色彩空间(RGB与BGR)
RGB:人眼的色彩空间,OpenCV默认使用BGR,两者之间的区别就是通道顺序不同
![![[Pasted image 20240620104928.png]]](https://img-blog.csdnimg.cn/direct/a67e855658d2422aa7d2d43fbd792e22.png)
![![[Pasted image 20240620104943.png]]](https://img-blog.csdnimg.cn/direct/d1d9500111174fec827cafbfaacd6679.png)
OpenCV色彩空间(HSV与HSL)
HSV:
H --> Hue:色相,即色彩,如红色,蓝色
S --> Saturation: 饱和度,颜色的纯度
V --> Value: 明度
![![[Pasted image 20240620105331.png]]](https://img-blog.csdnimg.cn/direct/4b13f8ec11304e13935f6456c97add5e.png)
![![[Pasted image 20240620105744.png]]](https://img-blog.csdnimg.cn/direct/7278392b399a4470aa3a8575da04c461.png)
![![[Pasted image 20240620105817.png]]](https://img-blog.csdnimg.cn/direct/5cfe89e4459347afa974749f0355e7df.png)
OpenCV为什么要使用HSV
因为OpenCV可以针对颜色的色相进行判断,RGB不好判断。
OpenCV色彩空间转换
YUV
主要用在视频中,编解码器一般都会使用yvu作为数据源。对于yvu来说主要包括三种类型
1. YUV4:2:0
2. YUV4:2:2
3. YUV4:4:4
以上都是对于像素的描述,例如 YUV4:4:4 代表4个Y数据,4个U数据,4个V数据。Y代表灰色的录像,UV代表颜色。比如以前家用的黑白电视,黑白电视用的就是数据 Y,有了彩色电视,兼容黑白电视就有了YUV。这样彩色电视即可以播放黑白画面,也可以播放彩色画面。YUV4:4:4类似RGB,RGB是8:8:88个红色 8个绿色 8个蓝色。
YUV4:2:0 是一个标准,它比 YUV4:4:4 存储空间节省一半。
![![[Pasted image 20240620110213.png]]](https://img-blog.csdnimg.cn/direct/bcab393ba4924c0b8ca4f6d761f5dd62.png)
import cv2def callback():passcv2.namedWindow('color', cv2.WINDOW_GUI_NORMAL)
color_list = [cv2.COLOR_BGR2RGBA,cv2.COLOR_BGR2BGRA,cv2.COLOR_BGR2GRAY,cv2.COLOR_HSV2BGR_FULL,cv2.COLOR_BGR2YUV]len = len(color_list)
img = cv2.imread('./img/cat.jpg')
cv2.createTrackbar('curcolor', 'color', 0, 4, callback)while True:v = cv2.getTrackbarPos('curcolor', 'color')#颜色空间转换APIcvt_img = cv2.cvtColor(img, color_list[v])cv2.imshow('color', cvt_img)if cv2.waitKey(1) & 0xff == ord('q'):break
cv2.destroyAllWindows()
相关文章:
opencv学习笔记(2)
设置鼠标回调函数 setMouseCallback(winname, callback, userdata) winname:窗口名字 callback:回调函数 userdata:传回callback中 callback(event, x, y, flags,userdata) event:鼠标事件 x: 鼠标的x坐标 y: 鼠标的y坐标 flags:鼠标键和组合键 userdata:setMouseCallback传回…...
分享vs code十大好用的插件
1.Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code 将 VS Code 界面改成简体中文。 2.PDF Viewer 在VS Code 中打开 PDF文件。 3.TODO Highlight 这个扩展会突出显示您的待办事项注释,并提醒存在未完成的注释或任务。 该扩展附带了内…...
MySQL支持哪些特殊字符
MySQL支持多种特殊字符,这些字符在SQL语句中具有特定的含义,需要在使用时特别注意。以下是一些MySQL中的特殊字符及其相关信息: 引号: 单引号():用于定义字符串。如果字符串中包含单引号本身&…...
c语言中的宏是什么?
宏的定义及用途 C语言中的宏是一种预处理指令,它允许程序员定义一个名称,该名称可以代表一段代码或一个值。宏的主要用途是简化代码的编写,提高代码的可读性和可维护性,以及实现代码的重复利用。 宏的定义使用#define指令&#…...
采购信息记录标准编码范围维护以及如何开发获取编码范围
上图是配置的点,在这里可以获取到对应的编号范围以及对象名称 下面的话是官方就如何取编号的技术文档 SAP Help Portal...
渗透测试基础(四) MS08-067 漏洞攻击
1. 漏洞介绍 漏洞描述 Microsoft Windows Server服务RPC请求缓冲区溢出漏洞Windows的Server服务在处理特质RPC请求时存在缓冲区溢出漏洞,远程攻击者可以通过发送恶意的RPC请求触发这个溢出,导致完全入侵用户系统,以SYSTEM权限执行任意指令。…...
vmware 虚拟机保留数据扩展C盘
1,在默认安装系统的时候,VMWARE一般给C盘50G,很多人想着够用了,但是后面慢慢的安装各种大型软件,游戏,才发现,悔时已晚。 2,有很多人虚拟机其实就是拿来游戏多开,但是当…...
vscode cmake c++ include 设置
在这里设置编译器路径,include路径等等。 一个奇怪的现象是同一项目放在VS中可以cmake生成,并正常运行,但是放在VSCODE中cmake生成时会报错,如iostream、limits等头文件找不到。当在VS中运行执行完成调试后,在运行VSC…...
2024-06-19 高等数学(统计学和概率论-高等工科数学)
学习数学时,有效的笔记方法可以帮助你更好地理解和记忆概念、公式和解题技巧。下面是一个数学笔记的基本模本,你可以根据自己的需求进行调整: 1. **标题**:写上日期和课程名称,例如“2024-06-19 高等数学”。 2. **课…...
idea 创建properties文件,解决乱码
设置properties文件编码 点击file->Settings File Encodings->设置utf-8 重新创建.properties文件才生效...
树莓派4B学习笔记11:PC端网线SSH连接树莓派_网线连接请求超时问题解决
今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1: 今日学习使用网线连接树莓派,网线可以提供更…...
适合营销的叙事可视化
背景 数据可视化与数据故事化的差异和相似点,以及它们如何协同工作,将你的数据转化为清晰、简洁、可操作的信息,以便您的组织使用。 什么是数据可视化? 数据可视化通过图像传达信息——这是你所收集数据的视觉表示。通过提供原…...
Spring Cloud全家桶(上)【Nacos、OpenFeign、LoadBalancer、GateWay、金丝雀灰色发布】
0.零基础入门微服务实战课 1.微服务和 Spring Cloud1.1 什么是微服务?1.2 什么是 Spring Cloud?1.3 微服务 VS Spring Cloud 2.为什么要学微服务?3.Spring Cloud 组件介绍1.什么是 Nacos?1.1 Nacos 功能1.1.1 配置中心1.1.2 注册中心 1.2 Na…...
GPRS与4G网络:技术差异与应用选择
在移动通信的发展历程中,GPRS(General Packet Radio Service)和4G(Fourth-Generation)技术都扮演着举足轻重的角色。虽然两者都旨在提供无线数据传输服务,但在数据传输速率、延迟和覆盖范围等方面ÿ…...
【Spring】1. Maven项目管理
📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…...
工业制造领涉及的8大常见管理系统,如mes、scada、aps、wms等
在工业生产和制造领域有一些常见的管理系统,很多小伙伴分不清,这次大美B端工场带领大家了解清楚。 MES(Manufacturing Execution System,制造执行系统): MES是一种用于监控、控制和优化生产过程的软件系统…...
Lianwei 安全周报|2024.06.17
新的一周又开始了,以下是本周「Lianwei周报」,我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件,保证大家不错过本周的每一个重点! 政策/标准/指南最新动态 01 IDC:2024 第一季度中国安全硬件市场规模…...
海量数据处理利器 Roaring BitMap 原理介绍
作者:来自 vivo 互联网服务器团队- Zheng Rui 本文结合个人理解梳理了BitMap及Roaring BitMap的原理及使用,分别主要介绍了Roaring BitMap的存储方式及三种container类型及Java中Roaring BitMap相关API使用。 一、引言 在进行大数据开发时,…...
Javaweb登录校验
登录校验 JWT令牌的相关操作需要添加相关依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency>一、摘要 场景:当我们想要访问一个网站时&am…...
vxe-table 列表过滤踩坑_vxe-table筛选
但是这个过滤输入值必须是跟列表的值必须一致才能查到,没做到模糊查询的功能,根据关键字来过滤并没有实现。 下面提供一下具体实现方法:(关键字来过滤) filterNameMethod({ option, row }) {if (row.name.indexOf(op…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined.
这个警告表明您在使用Vue的esm-bundler构建版本时,未明确定义编译时特性标志。以下是详细解释和解决方案: 问题原因: 该标志是Vue 3.4引入的编译时特性标志,用于控制生产环境下SSR水合不匹配错误的详细报告1使用esm-bundler…...
C# WPF 左右布局实现学习笔记(1)
开发流程视频: https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码: GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用(.NET Framework) 2.…...
