如何用hsv来判定某个像素的颜色
1、螽啸镥释相比与RGB识别颜色,HSV颜色识别的准确度更高,HSV中对颜色的掌控只有H这个值,所以当H的区间定了,该颜色基本就定了。以下为对各种颜色判断HSV的区间。在计算机识别颜色上,将H取值为(0,180°);S为(0,255);V为(0,255)
2、在C++中,可以用scalar.val[0] 表示Hscalar.val[1] 表示Sscalar.val[2] 表示V
3、对颜薄本窭煌色的判定可以如下所示:if ((scalar.val[0] >= 0 && scalar.val[0] <= 180) &锾攒揉敫amp;& (scalar.val[1] >= 0 && scalar.val[1] <= 255) && (scalar.val[2] >= 0 && scalar.val[2] <= 46)){ numblack++;//黑色判定 } else if ((scalar.val[0] >= 0 && scalar.val[0] <= 180) && (scalar.val[1] >= 0 && scalar.val[1] <= 43) && (scalar.val[2] >= 46 && scalar.val[2] <= 220)){ numgrey++;//灰色判定 } else if ((scalar.val[0] >= 0 && scalar.val[0] <= 180) && (scalar.val[1] >= 0 && scalar.val[1] <= 30) && (scalar.val[2] >= 221 && scalar.val[2] <= 255)){ numwhite++;//白色判定 } else if (((scalar.val[0] >= 0 && scalar.val[0] <= 10) || (scalar.val[0] >= 156 && scalar.val[0] <= 180)) && (scalar.val[1] >= 43 && scalar.val[1] <= 255) && (scalar.val[2] >= 46 && scalar.val[2] <= 255)){ numred++;//红色判定 } else if ((scalar.val[0] >= 26 && scalar.val[0] <= 34) && (scalar.val[1] >= 43 && scalar.val[1] <= 255) && (scalar.val[2] >= 46 && scalar.val[2] <= 255)){ numyellow++;//黄色判定 } else if ((scalar.val[0] >= 100 && scalar.val[0] <= 124) && (scalar.val[1] >= 43 && scalar.val[1] <= 255) && (scalar.val[2] >= 46 && scalar.val[2] <= 255)){ numblue++;//蓝色判定 }
4、首先遍历整个图像的像素点,然后对每一个像素点进行HSV提取,对该像素点颜色进行判定,判定为某种颜色,该颜色+1,直到全部像素点判定完成,也就知道该颜色的数目,该颜色数目/总像素数目=该颜色在这图片上的占比。
5、占比计算和输出。