问题描述:
在利用Deeplab V3+ 获得图片的分割之后,下一步希望获得各类别的像素面积及其比例,从而进行其他方面的分析工作,提取过程如下:
利用OpenCV提取面积:
主要过程:1. 将图像从BGR 转换为 HSV,便于颜色区分;
2. 利用cv2.inRange函数,提取指定的颜色,如:红色;
3. 查找轮廓,并计算轮廓的面积。
整个过程做成动画,就是酱紫的:
难点:如何求出图像的 HSV 值呢?
方法一: 利用 OpenCV中的 cv2.cvtColor进行转换,获得HSV值再设置上下限即可。然而,
有些颜色的RGB肉眼看不出来,这时宜采用到方法二。
red = np.uint8([[[0, 0, 128]]])
hsv_red = cv2.cvtColor(red, cv2.COLOR_BGR2HSV)
print(hsv_red) # [[[ 0 255 128]]]
方法二:利用PS求出HSV值。点击图中的1(图标像吸管),选择HSB颜色,图中2处显示了结果。
由于OpenCV中,H为 [0, 180], S为 [0, 255],V为 [0, 255],
在 PS 中 H为 [0, 360], S为 [0, 1],V为 [0, 1],
所以转换方式:在 PS 中的数据 H / 2, S x 255, V x 255 得到OpenCV中的HSV值。