OpenCV中RGB图像的色相图

时间:2019-04-28 22:21:34

标签: opencv

我想检查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();
    }

enter image description here

从生成的色相图中,我看不到为什么左上方的红色圆圈看起来如此明亮,而下方的红色圆圈如此黑暗?在这种情况下,如何分割红色圆圈?原始圆圈图片位于circles.jpg

1 个答案:

答案 0 :(得分:2)

使用在线color picker,您可以看到上方的圆圈的色相约为350,下方的圆圈的色相约为10度。发生这种情况是因为红色位于色相圈的边界:

enter image description here

如果要分割红色,则必须使用两个阈值,因为红色都位于色相频谱的下部和上部。