Colors Opencv:将色调图像转换为RGB图像

Colors Opencv:将色调图像转换为RGB图像,colors,opencv,rgb,Colors,Opencv,Rgb,我试图从我的网络摄像头中显示图像的色调成分。我已经将图像分割为色调分量,但我不知道如何将色调分量显示为纯色。例如,如果图像的一个像素为B=189 G=60 R=60,则在HSV中,H=0。我不希望绘制图像是色调的灰度值,而是与色调或H=0->B=0 G=0 R=255等效的RGB IplImage *image, *imageHSV, *imageHue; image = cvQueryFrame(capture); //image from webcam imageHSV = cvCreate

我试图从我的网络摄像头中显示图像的色调成分。我已经将图像分割为色调分量,但我不知道如何将色调分量显示为纯色。例如,如果图像的一个像素为B=189 G=60 R=60,则在HSV中,H=0。我不希望绘制图像是色调的灰度值,而是与色调或H=0->B=0 G=0 R=255等效的RGB

IplImage *image, *imageHSV, *imageHue;
image = cvQueryFrame(capture); //image from webcam
imageHSV = cvCreateImage( cvGetSize(image), IPL_DEPTH_8U, 3 );
imageHue = cvCreateImage( cvGetSize(image), IPL_DEPTH_8U, 1 );
cvCvtColor( image, imageHSV, CV_BGR2HSV );
cvSplit( imageHSV, imageHue, 0, 0, 0 );

我觉得有一个简单的解决方案,因此非常感谢您的帮助。

如果我理解正确,您希望“正确”地可视化色调组件。您可以创建另一个
imageSat
imageVal
,每个通道一个,最多填充255个通道。然后将
cvMerge
您的
imageHue
与其他两个图像合并,创建一个新的HSV图像,并将其转换回RGB/BGR进行最终显示。

效果非常好,谢谢!我以前尝试过cvMerge,但我想我从未想过用最大值填充每个图像。如果你不喜欢S/V,你不需要分割它,只需将它们设置为最大值即可。我记不清,但我认为cvSetCOI(hsvimg,2);cvSet(hsvimg,255);以及同样的3可能已经工作。完成后,不要忘记将COI(感兴趣的频道)重置回0(=无频道,使用整个图像)。单击zerm答案旁边的空心复选标记,您可以接受zerm的答案为正确答案。您也可以通过单击答案旁边的向上箭头向上投票。