2015-04-12 49 views
1

我正在将BGR图像转换为YCrCb并将其保存在磁盘中;然而,输出图像是灰色的,我怎样才能将图像保存为带有颜色的磁盘?BGR到YCrCb导致OpenCV中的灰度图像

这里只是我的代码看起来像一个例子:

Mat img = imread("..."); 
Mat img2; 
cvtColor(img, img2, CV_BGR2YCrCb); 

vector<Mat> planes; 
split(imgColorConverted, planes); 

imwrite(".../planes1.jpg", planes[0]); 
imwrite(".../planes2.jpg", planes[1]); 
imwrite(".../planes3.jpg", planes[2]); 

当我打开保存的图像,它是灰色的。是否可以保存图像,我在维基百科上找到以下示例(Wikipedia - YCbCr)?:

谢谢!

Image extracted from Wikipedia

回答

3

在你的情况下,您可以节省1张通道的图片,所以它是灰色的。事实上,你应该做的是:

Mat img = imread("..."); 
Mat img2; 
cvtColor(img, img2, CV_BGR2YCrCb); 

vector<Mat> planes; 
split(imgColorConverted, planes); 

Mat* planes2 = new Mat[3]; 
Mat emptyMat(planes[0].size(), planes[0].type(), Scalar(0)); 
Mat Cr, Cb; 
imwrite(".../planes1.jpg", planes[0]); 
// Set Cr channel on R channel 
planes2[0] = emptyMat; 
planes2[1] = emptyMat; 
planes2[2] = planes[1]; 
merge(planes2, 3, Cr); 
imwrite(".../planes2.jpg", Cr); 
// Set Cb channel on B channel 
planes2[0] = planes[2]; 
planes2[1] = emptyMat; 
planes2[2] = emptyMat; 
merge(planes2, 3, Cb); 
imwrite(".../planes3.jpg", Cb); 
+0

你可以尝试做:mat emptyMat(planes [0] .size(),planes [0] .type(),Scalar(255));.你可能会得到更好的视觉效果。 (白色很漂亮:) –