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

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]]

![[Pasted image 20240620104943.png]]

OpenCV色彩空间(HSV与HSL)

HSV:
H --> Hue:色相,即色彩,如红色,蓝色
S --> Saturation: 饱和度,颜色的纯度
V --> Value: 明度
![[Pasted image 20240620105331.png]]

![[Pasted image 20240620105744.png]]

![[Pasted image 20240620105817.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]]

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)技术都扮演着举足轻重的角色。虽然两者都旨在提供无线数据传输服务,但在数据传输速率、延迟和覆盖范围等方面&#xff…...

【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>一、摘要 场景&#xff1a;当我们想要访问一个网站时&am…...

vxe-table 列表过滤踩坑_vxe-table筛选

但是这个过滤输入值必须是跟列表的值必须一致才能查到&#xff0c;没做到模糊查询的功能&#xff0c;根据关键字来过滤并没有实现。 下面提供一下具体实现方法&#xff1a;&#xff08;关键字来过滤&#xff09; filterNameMethod({ option, row }) {if (row.name.indexOf(op…...

双模型灾备方案:OpenClaw同时配置百川2-13B-4bits与Llama3应对服务中断

双模型灾备方案&#xff1a;OpenClaw同时配置百川2-13B-4bits与Llama3应对服务中断 1. 为什么需要双模型灾备 去年冬天的一个深夜&#xff0c;我正在用OpenClaw自动处理一批技术文档的翻译任务。突然收到一连串报警通知——原本稳定运行的Qwen模型服务因为网络波动彻底失联。…...

编写程序实现智能鱼竿鱼线拉力检测,拉力超标提示“小心断线”。

&#x1f3a3; 项目实战&#xff1a;基于应变片的智能鱼竿拉力监测系统一、实际应用场景描述 (Scenario)在海钓或路亚钓法中&#xff0c;鱼竿的调性&#xff08;Action&#xff09;和钓线的磅数&#xff08;LB&#xff09;至关重要。新手往往凭感觉遛鱼&#xff0c;当大鱼突然发…...

告别依赖地狱:用Buildroot一键搞定OpenCV 4.x在ARM板上的交叉编译环境

告别依赖地狱&#xff1a;用Buildroot一键搞定OpenCV 4.x在ARM板上的交叉编译环境 在嵌入式视觉应用开发中&#xff0c;OpenCV几乎是不可或缺的计算机视觉库。但当开发者尝试将OpenCV部署到ARM架构的嵌入式设备时&#xff0c;往往会陷入依赖库编译的泥潭——FFmpeg、libjpeg、l…...

PCB首次上电安全操作与防炸板指南

PCB首次上电安全操作指南&#xff1a;从炸板事故中汲取的工程经验1. 硬件工程师的必修课&#xff1a;上电安全1.1 典型上电事故案例分析在嵌入式硬件开发领域&#xff0c;PCB首次上电环节隐藏着诸多技术风险。根据行业调查&#xff0c;约78%的硬件工程师在其职业生涯中至少经历…...

Windows资源管理器终极美化指南:一键添加惊艳毛玻璃效果

Windows资源管理器终极美化指南&#xff1a;一键添加惊艳毛玻璃效果 【免费下载链接】ExplorerBlurMica Add background Blur effect or Acrylic (Mica for win11) effect to explorer for win10 and win11 项目地址: https://gitcode.com/gh_mirrors/ex/ExplorerBlurMica …...

智能内容解锁工具:5分钟掌握付费墙突破技巧

智能内容解锁工具&#xff1a;5分钟掌握付费墙突破技巧 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在数字信息时代&#xff0c;优质内容常被付费墙阻隔&#xff0c;而bypass-payw…...

实战演练:在快马平台模拟静电地板排布与支架系统配置方案

今天想和大家分享一个特别实用的工具——在InsCode(快马)平台上快速搭建的静电地板施工模拟器。作为机房建设中的重要环节&#xff0c;静电地板施工的合理规划直接影响后期使用效果。这个工具能帮我们在实际施工前&#xff0c;通过可视化模拟规避很多潜在问题。 核心功能设计思…...

别再乱用.pem和.key了!用ASN.1 Editor手把手拆解RSA私钥的PKCS#8格式(附OpenSSL 3.1验证)

从文件后缀到密钥本质&#xff1a;用ASN.1 Editor透视RSA私钥的PKCS#8结构 当你在终端输入openssl genpkey -algorithm RSA生成密钥对时&#xff0c;是否曾好奇过.pem文件里那些看似随机的字符究竟隐藏着什么秘密&#xff1f;面对invalid key format的错误提示&#xff0c;又是…...

如何用3种方法让Fira Code字体提升你的编码效率?

如何用3种方法让Fira Code字体提升你的编码效率&#xff1f; 【免费下载链接】FiraCode Free monospaced font with programming ligatures 项目地址: https://gitcode.com/GitHub_Trending/fi/FiraCode 还在为代码中的箭头符号显示不清晰而烦恼&#xff1f;是否经常需要…...

智能客服架构图实战:从高并发设计到生产环境部署

今天想和大家聊聊智能客服系统的架构实战。我们团队最近刚把一个老的单体客服系统重构为微服务架构&#xff0c;主要就是为了应对大促期间的高并发访问。整个过程踩了不少坑&#xff0c;也积累了一些经验&#xff0c;在这里做个梳理和分享。 先说说我们遇到的痛点。原来的系统&…...