使用cvCvtColor()问题进行HSV转换

时间:2013-05-15 20:25:56

标签: c opencv threshold hsv

我正在尝试使用函数cvCvtColor()将RGB图像转换为HSV,但结果是意外的。例如,白色转换为接近红色的东西。

        cvCvtColor(img, hsv, CV_BGR2HSV);
        cvSplit( hsv, h, s, v, NULL );
        cvInRangeS(h,cvScalar(0,0,0,0),cvScalar(20,0,0,0),imgthresh);  
        cvShowImage("image", img);
        cvShowImage("hsv", hsv);
        cvShowImage("threshold", imgthresh);

图像是否正确转换并且只显示错误? 关于阈值,更好的方法是使用3个通道还是仅使用色调? 我想跟踪红色物体。 抱歉英语。 感谢。

1 个答案:

答案 0 :(得分:3)

cvShowImage总是期望RGB值(或者BGR,我不确定)。因此,当您转换为HSV时,预计颜色会显示不同。使用此rgb to hsv conversor,您可以看到白色 - RGB表示为(255,255,255) - 在HSV中转换为(0,0,100%)。正如你所说白色的显示颜色是红色的,我怀疑cvShowImage在默认情况下确实期待BGR。