当我将图片从YUV
转换为RGB
时,当我尝试打印像素时,我无法获得Y值。我得到一个值377
,当我用整数转换它时,我得到255.我认为这是不正确的。是否有更好的方法或更准确的方法来打印YUV图像像素的值。
实际上我正在引用价值(int)src.at<Vec3b>(j,i).val[0]= 255
和src.at<Vec3b>(j,i).val[0] = 377
同样在该注释中,Y是根据音符计算的RGB与一些常数的组合。我实际上很困惑如何获得Y的值。
答案 0 :(得分:1)
这是OpenCV的问题。 OpenCV没有为uchar
格式正常处理(缩放)YUV或HSV颜色空间。使用Vec3b
,您实际上有3个频道uchar
,范围为[0; 255]。
解决方案是使用另一种矩阵类型。使用cv::Mat3f
,您有一个3通道浮点图像。然后,cvtColor
函数将正确转换这些值。您可以通过分配从Mat3b获取Mat3f。
使用较少内存的另一种解决方案可能是Mat3s和Mat3w类型,如果cvtColor支持。