所以我在分析相机图像,想从中提取黑字。首先,我定义了所有通道的阈值并将其应用于图像,例如
low = [0, 0, 0]
up = [0.42, 0.42, 0.42]
然后,我检索了一个蒙版以供进一步使用,方法是用
掩码=cv2.inRange(图像,低,上)
直到我发现不同的光照条件让我遇到了问题。E、 g.如果图像更亮,我可以将阈值上限调整为0.65
,这对我分析的所有案例中的黑白区分都足够了。但是:现在其他颜色也会出问题,因为更多的颜色在这个间隔内。我认为第二个条件将所有可能的值限制为灰色,即只允许每个像素的三个通道的值之间存在一定的差异。在
现在的问题是,我如何以一种平滑的方式实现第二个条件,这样带有[0.4, 0.6, 0.4]
的像素将被踢出,而带有[0.6, 0.62, 0.57]
的像素将保持不变(随机示例,我自己调整参数)?在不需要对整个图像进行及时迭代的情况下,将这两者结合起来的最平滑的方法是什么?在
多谢了,这会很有帮助的!在
通道的强度范围是沿轴2的最大和最小强度之间的差值。您可以利用NumPybroadcasting开发一个完全矢量化的解决方案:
演示
在下面的示例运行中,我使用随机生成的
^{pr2}$4
行和5
列的3通道映像。在阈值设置为}。在
low = [.0, .0, .0]
、up = [.6, .5, 0.7]
和{相关问题 更多 >
编程相关推荐