如何在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值相关推荐

  1. 使用OpenCV中的色彩空间进行颜色分割

    在本教程中,我们将学习Computer Vision中使用的流行色彩空间,并将其用于基于颜色的分割. 1975年,匈牙利专利HU170062引入了一种难题,在43,252,003,274,489,85 ...

  2. 使用OpenCV中的分类器和颜色识别的苹果位置识别

    使用OpenCV中的分类器和颜色识别的苹果位置识别 环境配置和安装 拍摄并处理样本 生成正样本的描述文件pos.vec 开始训练分类器 单目测距 完成分类器与颜色识别,轮廓提取算法的结合 运行结果图片 ...

  3. opencv 锐化 java_如何在OpenCV中锐化图像?

    如何在OpenCV中锐化图像? 如何使用OpenCV锐化图像? 有许多平滑或模糊的方法,但没有我能看到的锐化. 7个解决方案 147 votes 关于反锐化掩蔽的维基百科文章中列出了一个通用程序:您使 ...

  4. css可以设置文本框颜色吗,如何在css中设置文本框颜色

    如何在css中设置文本框颜色 发布时间:2021-04-29 15:33:54 来源:亿速云 阅读:72 作者:Leah 如何在css中设置文本框颜色?针对这个问题,这篇文章详细介绍了相对应的分析和解 ...

  5. 如何在OpenCV中使用YOLO

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 今天,我们将研究如何在OpenCV框架中使用YOLO.YOLO于2 ...

  6. java多边形晕线的方法_如何在OpenCV中绘制一组封闭的多边形曲线,将每个线段表示为不同的颜色(即在彩虹色空间中)?...

    我正在学习使用cv2.approxPolyDP函数将OpenCV轮廓分割成更简单更相关的曲线 . 我想为自己说明这一点,以便更好地了解正在发生的事情 . 我越来越近了,cv2.approxPolyDP ...

  7. android html超链接颜色,如何在android中更改超链接的颜色

    为了在我的 Android应用程序的页面上显示超链接,我这样做: MyProgram.java link1.setText(Html.fromHtml(linkText1)); link1.setMo ...

  8. pythonopencv测距_如何在opencv中测量两点之间的距离(像素到厘米)

    你好,我有一个代码,可以测量两点之间的距离,但我认为结果是以像素为单位的,所以想得到距离,但以厘米为单位. 我使用的是微软LifecamHD-3000摄像头,我真的不知道在代码的这一点上该怎么做. T ...

  9. 如何在opencv中实现不同程度的锐化

    考虑到网友们中有急急国王,先上代码: def sharpen(img, sharpness=100, ktype=1):n = sharpness/100if ktype == 1:sharpen_o ...

最新文章

  1. 4.10日一直报错application未注入的问题解决
  2. 很全的SQL注入语句,有SQL漏洞的都可以拿下
  3. LeetCode Reorder List
  4. [原创]TimeQuest约束外设之诡异的Create Generated Clocks用法
  5. 69. Sqrt(x)(python)
  6. 最佳拟合直线_JAVA
  7. GlassFish 4带来了Java EE 7
  8. linux 用户 组区别吗,Linux系统的用户和用户组有什么区别
  9. html5与css3入门知识点精炼
  10. 专题导读:大数据异构并行系统
  11. Nmap流量特征修改(NTA、IDS、IPS、流量审计)
  12. Ascll字符串转换到二进制字符串
  13. nginx缓存、压缩配置
  14. 要不要使用外键(foreign key )?
  15. Does Your Wooden Surface Really Need Sealing?
  16. 绘制曲线设置颜色和样式
  17. MATLAB求解线性规划(含整数规划和0-1规划)问题
  18. 2022最新微信步数提交平台网站PHP源码
  19. 【猪八戒】- 2017年在线笔试“叠字问题”
  20. 最长对称子串 作者 陈越单位 浙江大学

热门文章

  1. Java的File类
  2. ViewPager 的点击事件回调
  3. 源程序,解释器,编译器
  4. com.android.ide.common process ProcessException:Failed to execcue aapt
  5. java中标识符,关键字,数据类型
  6. 004_常用词汇句子翻译记录
  7. mysql的时间存储格式
  8. 【线段树分治 线性基】luoguP3733 [HAOI2017]八纵八横
  9. 【java线程】锁机制:synchronized、Lock、Condition
  10. gcc 从5.3升级到6.1之后 openwrt pkg-config glib编译报错修复办法