我们有一个Matlab程序,以YCbCr格式从相机中获取图像,然后像RGB图像一样保存R值为图像的Y值,G值为图像的Cb值,B值为图像的Cr值。有没有办法在c++ openCV中复制这个过程?
如果OpenCV可以从相机读取图像,是的,您可以在OpenCV中复制此过程。你所要做的就是确保每个通道都在可接受的范围内(0..255(8位),并将图像保存到文件。
对于值的范围,Cb和Cr可以为负,但G和B可以不为负。您可以通过移动来解决这个问题-在保存时为Cb和Cr添加128(在加载时相反)-或者通过聪明地确定哪些通道是有符号的和无符号的。
保存时,图像保存代码假设图像为RGB格式,并按原样对R、G、B分量进行编码。如果您的图像是YCbCr,那么Y将被编码为R, Cb为G, Cr为b。在其他程序中打开图像会看起来错误,但这是预料之中的。