当我将图像从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/