0

我正在尝试使用函数 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 个通道还是仅使用色调?我想跟踪红色物体。对不起英语。谢谢。

4

1 回答 1

3

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

于 2013-05-15T20:36:10.540 回答