OpenCV图像从RGB转换为HSV

Kau*_*hal 9 c++ opencv image image-processing visual-c++

当我在样本图像(RGB)上运行以下代码,然后处理它以显示转换的HSV图像时,两者看起来都不同......

谁能解释为什么会这样?
或者
你可以建议一个解决方案,这不会发生...因为它毕竟是相同的图像

Mat img_hsv,img_rgb,red_blob,blue_blob;
img_rgb = imread("pic.png",1);
cvtColor(img_rgb,img_hsv,CV_RGB2HSV);
namedWindow("win1", CV_WINDOW_AUTOSIZE);
imshow("win1", img_hsv);
Run Code Online (Sandbox Code Playgroud)

zer*_*erm 27

  1. 我不知道新的(2.x)OpenCV还不够,但通常在OpenCV中加载的图像是CV_BGR通道顺序而不是RGB,所以你很可能想要CV_BGR2HSV

  2. OpenCV实际上并不"知道"HSV,它只会在第一个通道中编码Hue,在第二个通道中编码饱和度,在第三个通道中编码值.如果在OpenCV中显示图像,则highgui假定它是BGR图像,从而将第一个通道(现在为Hue)解释为Blue等.