阈值图像
为了将彩色图像,例如由您的相机捕获的图像,转换为以目标为“前景”的二进制图像,我们需要使用每个像素的色相,饱和度和值对图像进行阈值处理。
HSV模型
与RGB不同,HSV不仅可以根据像素的颜色进行过滤,还可以根据颜色的强度和亮度进行过滤。
色相:测量像素的颜色。
饱和度:测量像素的颜色强度。
Value: Measures the brightness of the pixel.
您可以使用OpenCV将BGR图像矩阵转换为HSV。
hsv_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2HSV)
备注
OpenCV的色相范围从1°到180°,而不是普通的1°到360°。为了将通用色相值转换为OpenCV,请除以2。
阈值
我们将以现场图像为例来说明整个图像处理过程。
通过使用HSV对图像进行阈值处理,可以将图像分为视觉目标(前景)和相机看到的其他物体(背景)。以下代码示例通过使用HSV值进行阈值处理将HSV图像转换为二进制图像。
binary_img = cv2.inRange(hsv_img, (min_hue, min_sat, min_val), (max_hue, max_sat, max_val))
备注
这些值可能必须在每个场所进行调整,因为不同场所的环境照明可能会有所不同。建议通过NetworkTables编辑这些值,以便于即时编辑。
阈值化后,您的图像应如下所示。
如您所见,阈值处理可能不是100%干净。您可以使用形态学运算来处理噪声。