2010-06-11 103 views
2

我试图从我的摄像头显示图像的色相组件。我已将图像拆分为色相组件,但我无法弄清楚如何将色相组件显示为纯色。例如,如果图像的一个像素是B = 189 G = 60 R = 60,那么在HSV中,H = 0。我不希望的拉伸图像是色调或灰度值,但RGB等效色相H = 0 - > B = 0 G = 0,R = 255Opencv:将色调图像转换为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); 

我有一种感觉有是一个简单的解决方案,所以任何帮助,赞赏

+0

您可以通过点击他/她答案旁边的空白复选标记来接受zerm的答案为正确答案。您也可以通过点击答案旁边的向上箭头来对其进行修改。 – 2010-06-28 17:40:10

回答

3

如果我正确地理解了你,你想要“正确”可视化Hue组件。您可以创建另一个imageSatimageVal,每个单通道并填充255(最大值)。然后cvMerge你的imageHue与其他两个,创建一个新的HSV图像,并将其转换回RGB/BGR最终显示。

+0

完美的作品,谢谢!我之前尝试过cvMerge,但我想我从来没有想过用最大值填充每个图像。 – jhaip 2010-06-11 12:54:14

+0

如果你不关心S/V,你不需要分割它,只需将它们设置到最大。 我不知道,但我认为cvSetCOI(hsvimg,2); cvSet(hsvimg,255);以及相同的3可能已经工作。当你完成后,不要忘了重置COI(感兴趣的频道)回0(=没有频道,使用整个图像)。 – zerm 2010-06-11 13:47:10

相关问题