BGR 到 YCrCb 导致 OpenCV 中的灰色图像
BGR to YCrCb resulting in gray images in OpenCV
我正在将 BGR 图像转换为 YCrCb 并将其保存在磁盘中;但是,输出的图像是灰色的,如何将彩色图像保存到磁盘?
这只是我的代码的示例:
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) 上找到的以下示例?:
谢谢!
在你的例子中,你保存了 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);
我正在将 BGR 图像转换为 YCrCb 并将其保存在磁盘中;但是,输出的图像是灰色的,如何将彩色图像保存到磁盘?
这只是我的代码的示例:
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) 上找到的以下示例?:
谢谢!
在你的例子中,你保存了 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);