如何在OpenCV中为InRange阈值选择颜色的最佳HSV值
如何在OpenCV中为InRange阈值选择颜色的最佳HSV值
- 1. 效果图
- 2. 源码
- 参考
之前的博客介绍了如何使用Python,OpenCV通过HSV颜色空间转换检测对象,并进行轨迹追踪。怎么选定合适的HSV颜色阈值范围非常非常非常的重要。
这篇博客将介绍如何在OpenCV中为InRange阈值选择颜色的最佳HSV值范围。
1. 效果图
原始图如下:
选出红色的范围:
(0,40,45)~(30,255,255)
选出黑色的范围:
(0,0,0)~(179,255,254)
2. 源码
# 确定hsv颜色的最佳阈值
import cv2
import numpy as npdef nothing(x):pass# 创建一个窗口图片
cv2.namedWindow('image')# 对颜色变化创建轨迹兰
cv2.createTrackbar('HMin', 'image', 0, 179, nothing) # Hue is from 0-179 for Opencv
cv2.createTrackbar('SMin', 'image', 0, 255, nothing)
cv2.createTrackbar('VMin', 'image', 0, 255, nothing)
cv2.createTrackbar('HMax', 'image', 0, 179, nothing)
cv2.createTrackbar('SMax', 'image', 0, 255, nothing)
cv2.createTrackbar('VMax', 'image', 0, 255, nothing)# 设置默认HSV空间的最大值
cv2.setTrackbarPos('HMax', 'image', 179)
cv2.setTrackbarPos('SMax', 'image', 255)
cv2.setTrackbarPos('VMax', 'image', 255)# 初始化HSV空间最大、最小值
hMin = sMin = vMin = hMax = sMax = vMax = 0
phMin = psMin = pvMin = phMax = psMax = pvMax = 0img = cv2.imread('images/circle.png')
output = img
waitTime = 33while (1):# 获取轨迹栏的当前位置hMin = cv2.getTrackbarPos('HMin', 'image')sMin = cv2.getTrackbarPos('SMin', 'image')vMin = cv2.getTrackbarPos('VMin', 'image')hMax = cv2.getTrackbarPos('HMax', 'image')sMax = cv2.getTrackbarPos('SMax', 'image')vMax = cv2.getTrackbarPos('VMax', 'image')# 设置显示的HSV最大最小值lower = np.array([hMin, sMin, vMin])upper = np.array([hMax, sMax, vMax])# 创建HSV图像,并根据最低、最高阈值进行阈值化hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)mask = cv2.inRange(hsv, lower, upper)output = cv2.bitwise_and(img, img, mask=mask)# 展示是否HSV值有变化if ((phMin != hMin) | (psMin != sMin) | (pvMin != vMin) | (phMax != hMax) | (psMax != sMax) | (pvMax != vMax)):print("(hMin = %d , sMin = %d, vMin = %d), (hMax = %d , sMax = %d, vMax = %d)" % (hMin, sMin, vMin, hMax, sMax, vMax))phMin = hMinpsMin = sMinpvMin = vMinphMax = hMaxpsMax = sMaxpvMax = vMax# 展示输出图像cv2.imshow('image', output)# 等待33毫秒或者按下q键退出循环if cv2.waitKey(waitTime) & 0xFF == ord('q'):breakcv2.destroyAllWindows()
参考
参考:https://www.cnpython.com/qa/498520
如何在OpenCV中为InRange阈值选择颜色的最佳HSV值相关推荐
- 使用OpenCV中的色彩空间进行颜色分割
在本教程中,我们将学习Computer Vision中使用的流行色彩空间,并将其用于基于颜色的分割. 1975年,匈牙利专利HU170062引入了一种难题,在43,252,003,274,489,85 ...
- 使用OpenCV中的分类器和颜色识别的苹果位置识别
使用OpenCV中的分类器和颜色识别的苹果位置识别 环境配置和安装 拍摄并处理样本 生成正样本的描述文件pos.vec 开始训练分类器 单目测距 完成分类器与颜色识别,轮廓提取算法的结合 运行结果图片 ...
- opencv 锐化 java_如何在OpenCV中锐化图像?
如何在OpenCV中锐化图像? 如何使用OpenCV锐化图像? 有许多平滑或模糊的方法,但没有我能看到的锐化. 7个解决方案 147 votes 关于反锐化掩蔽的维基百科文章中列出了一个通用程序:您使 ...
- css可以设置文本框颜色吗,如何在css中设置文本框颜色
如何在css中设置文本框颜色 发布时间:2021-04-29 15:33:54 来源:亿速云 阅读:72 作者:Leah 如何在css中设置文本框颜色?针对这个问题,这篇文章详细介绍了相对应的分析和解 ...
- 如何在OpenCV中使用YOLO
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 今天,我们将研究如何在OpenCV框架中使用YOLO.YOLO于2 ...
- java多边形晕线的方法_如何在OpenCV中绘制一组封闭的多边形曲线,将每个线段表示为不同的颜色(即在彩虹色空间中)?...
我正在学习使用cv2.approxPolyDP函数将OpenCV轮廓分割成更简单更相关的曲线 . 我想为自己说明这一点,以便更好地了解正在发生的事情 . 我越来越近了,cv2.approxPolyDP ...
- android html超链接颜色,如何在android中更改超链接的颜色
为了在我的 Android应用程序的页面上显示超链接,我这样做: MyProgram.java link1.setText(Html.fromHtml(linkText1)); link1.setMo ...
- pythonopencv测距_如何在opencv中测量两点之间的距离(像素到厘米)
你好,我有一个代码,可以测量两点之间的距离,但我认为结果是以像素为单位的,所以想得到距离,但以厘米为单位. 我使用的是微软LifecamHD-3000摄像头,我真的不知道在代码的这一点上该怎么做. T ...
- 如何在opencv中实现不同程度的锐化
考虑到网友们中有急急国王,先上代码: def sharpen(img, sharpness=100, ktype=1):n = sharpness/100if ktype == 1:sharpen_o ...
最新文章
- 4.10日一直报错application未注入的问题解决
- 很全的SQL注入语句,有SQL漏洞的都可以拿下
- LeetCode Reorder List
- [原创]TimeQuest约束外设之诡异的Create Generated Clocks用法
- 69. Sqrt(x)(python)
- 最佳拟合直线_JAVA
- GlassFish 4带来了Java EE 7
- linux 用户 组区别吗,Linux系统的用户和用户组有什么区别
- html5与css3入门知识点精炼
- 专题导读:大数据异构并行系统
- Nmap流量特征修改(NTA、IDS、IPS、流量审计)
- Ascll字符串转换到二进制字符串
- nginx缓存、压缩配置
- 要不要使用外键(foreign key )?
- Does Your Wooden Surface Really Need Sealing?
- 绘制曲线设置颜色和样式
- MATLAB求解线性规划(含整数规划和0-1规划)问题
- 2022最新微信步数提交平台网站PHP源码
- 【猪八戒】- 2017年在线笔试“叠字问题”
- 最长对称子串 作者 陈越单位 浙江大学
热门文章
- Java的File类
- ViewPager 的点击事件回调
- 源程序,解释器,编译器
- com.android.ide.common process ProcessException:Failed to execcue aapt
- java中标识符,关键字,数据类型
- 004_常用词汇句子翻译记录
- mysql的时间存储格式
- 【线段树分治 线性基】luoguP3733 [HAOI2017]八纵八横
- 【java线程】锁机制:synchronized、Lock、Condition
- gcc 从5.3升级到6.1之后 openwrt pkg-config glib编译报错修复办法