我想检查RGB图像的色相图,以使其阈值进行颜色分割。以下是我的代码和结果:
Mat img = imread("circles.jpg");
if(!img.empty())
{
namedWindow("Image");
imshow("Image",img);
Mat img_hsv(img.size(),CV_8UC3);
cvtColor(img,img_hsv,COLOR_BGR2HSV);
Mat hue(img_hsv.size(),CV_8UC1);
Mat sat(img_hsv.size(),CV_8UC1);
Mat val(img_hsv.size(),CV_8UC1);
Mat out[] = {hue, sat, val};
split(img_hsv,out);
namedWindow("Hue");
imshow("Hue",hue);
waitKey();
}
从生成的色相图中,我看不到为什么左上方的红色圆圈看起来如此明亮,而下方的红色圆圈如此黑暗?在这种情况下,如何分割红色圆圈?原始圆圈图片位于circles.jpg
答案 0 :(得分:2)
使用在线color picker,您可以看到上方的圆圈的色相约为350,下方的圆圈的色相约为10度。发生这种情况是因为红色位于色相圈的边界:
如果要分割红色,则必须使用两个阈值,因为红色都位于色相频谱的下部和上部。