【发布时间】:2021-09-20 23:34:29
【问题描述】:
我希望能够动态地将图像上的橙色部分与红色部分分开。目前我正在使用范围,但范围的问题是它们是固定的,图像质量很差,橙色部分变得更红一点,或者红色部分变得更橙色一点,但仍然是这些部分保持肉眼可识别和区分。我正在考虑使用阈值来动态确定这些颜色,但我做不到。你对我有什么想法吗?
可能会出现图像质量较差且红色部分不再那么红的情况,但在此之前您仍然可以很好地区分不同的部分。然后,当我尝试您的答案时,它并没有完全做到它应该做的事情。
【问题讨论】:
-
您使用的是“范围”?提供详细信息(即代码)。你应该在 HSV 领域工作。
-
我已经在 HSV 领域工作了。当我谈论“范围”时,我的意思是 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) mask = cv2.inRange(hsv, (0, 20, 0), (13, 255, 255)) mask2 = cv2.inRange (hsv, (160, 20, 0), (180, 255, 255))
-
然后尝试 k-means 聚类,k=3 用于背景和两个前景(如果只选择前景像素,则 k=2)。希望它做正确的事。您可以在 RGB 元组或 HSV 元组上运行它。也许运行 ImageJ 并直观地探索数据的颜色直方图。
-
otsu 阈值也可能会起作用,如果您将颜色空间转换为主轴表示黄色/橙色与红色/粉红色的东西
标签: python image opencv image-processing colors