当我将图像从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的值感到困惑。

最佳答案

这是OpenCV的问题。 OpenCV无法为uchar格式适当地处理(缩放)YUV或HSV颜色空间。使用Vec3b,您可以有效地使用3通道uchar,范围为[0; 255]。

解决方案是使用另一种矩阵类型。使用cv::Mat3f,您可以获得3通道浮点图像。然后,这些值将由cvtColor函数正确转换。您可以通过分配从Mat3b获取Mat3f。

如果cvtColor支持,则使用较少内存的另一种解决方案可能是Mat3s和Mat3w类型。

关于image - 打印YUV图像的像素值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16545195/

10-11 15:51