我正在使用UnrealCV从虚幻引擎中获取蒙版图像和RGB图像。在这里,我还使用UnrealCV从蒙版图像中获取了对象的颜色信息(R,G,B)。现在,我想知道如何将RGB信息传递给OpenCV进行阈值处理。
我现在正在做这些工作,将遮罩图像转换为灰度图像,然后进行阈值处理。但是我不想这样做。我已经检查过this answer,但是这里使用的图像范围我也不想这么做。就像在遮罩图像中一样,每个对象都有其唯一的颜色信息,因此我只想通过从遮罩图像中发送所需对象的RGB信息来更加具体,然后希望告诉OpenCV对我拥有的颜色进行阈值处理发送到OpenCV阈值功能。
用于获取RGB信息的代码是-
get_mask_color= client.request('vget /object/object_name/color')
它将提供蒙版颜色,然后我将其传递给OpenCV以进行阈值化。
我希望它将像现在在灰度图像上一样进行阈值处理,然后我将使用阈值图像进行轮廓操作。
答案 0 :(得分:0)
在灰度图像中,阈值处理将暗像素与亮像素分开,即将灰度范围分为两个子间隔。这是基于(天真的)前提,感兴趣的对象是由最亮(或最暗)的颜色组成的。
一种更合乎逻辑的方法是考虑由两个阈值(平均颜色±最大变化)定义的子间隔内的像素值。如果感兴趣的对象具有几种不同的颜色,则每种颜色对应一个灰度值的间隔,并且这些灰度值将重叠或不重叠。实际上,这效果不佳,因为场景中的许多其他功能可能具有相同的灰度级。
在颜色的情况下,情况更加复杂。统一的颜色定义了RGB空间中的单个点,当您考虑变化时,您会观察到具有特定形状的整个体积。如果幸运的话,形状是紧凑的椭圆形。如果存在阴影和/或阴影效果,则形状可以是锥形的,并且可以扩展。
同样,当物体由多种颜色制成时,体积可以由多种重叠或孤立的形状构成。
要处理给定的应用程序,您必须了解与对象相对应的RGB云的形状,并找到合适的几何描述。首先,您可以使用具有给定中心和范围的立方体或球体。