cv::cvtColor 获取错误尺寸的图片
cv::cvtColor gets wrong size image
我正在使用以下代码将RGB格式图像转换为YUVI420格式图像,但结果i420Mat在颜色和尺寸上都是错误的。
cv::cvtColor(rgbMat, i420Mat, CV_RGB2YUV_I420);
源 rgbMat(RGB 格式):列:480,行:640;
对应CIImage:
目标 i420Mat(YUVI420 格式):列:480,行:960;
对应CIImage:
理想情况下,它们应该保持相同的大小,对吗?
不,它不应该保持相同的大小,因为 YUV_I420 是平面的。请注意,输入图像是 3 通道,但输出图像是 1 通道。
图像尺寸较大,因为图像的顶部(640*480)代表Y'平面(亮度),底部对应地代表U和V分量。所以所有的颜色平面都在一个单通道图像上表示,所以它有更大的尺寸。参见维基百科的图片:
Y'平面与灰度图像完全相同。
为什么我们在底部看到四张图片?
上两图对应U平面。左图为偶数行,右图为奇数行。底部V面也一样
有关更多信息,请阅读 wikipedia, and fourcc.org 中的精彩文章。
我正在使用以下代码将RGB格式图像转换为YUVI420格式图像,但结果i420Mat在颜色和尺寸上都是错误的。
cv::cvtColor(rgbMat, i420Mat, CV_RGB2YUV_I420);
源 rgbMat(RGB 格式):列:480,行:640;
对应CIImage:
目标 i420Mat(YUVI420 格式):列:480,行:960;
对应CIImage:
理想情况下,它们应该保持相同的大小,对吗?
不,它不应该保持相同的大小,因为 YUV_I420 是平面的。请注意,输入图像是 3 通道,但输出图像是 1 通道。
图像尺寸较大,因为图像的顶部(640*480)代表Y'平面(亮度),底部对应地代表U和V分量。所以所有的颜色平面都在一个单通道图像上表示,所以它有更大的尺寸。参见维基百科的图片:
Y'平面与灰度图像完全相同。
为什么我们在底部看到四张图片?
上两图对应U平面。左图为偶数行,右图为奇数行。底部V面也一样
有关更多信息,请阅读 wikipedia, and fourcc.org 中的精彩文章。