openCV方法cvCvtColor在YUV数据转RGB为何导致图片泛白?

Ginter 发布于 2016/09/19 17:53
阅读 810
收藏 0


 

//测试代码, out.yuv时从摄像头抓出来的一帧数据(YUV420的数据). 
    int w = 1280; int h = 720;  

    FILE* pFileIn = fopen("./out.yuv", "rb+");  
    int bufLen = w*h*3/2;  
    unsigned char* pYuvBuf = new unsigned char[bufLen];  
    int iCount = 0;  
  
    fread(pYuvBuf, bufLen*sizeof(unsigned char), 1, pFileIn);  
  
        cv::Mat yuvImg;  
        yuvImg.create(h*3/2, w, CV_8UC1);   
        memcpy(yuvImg.data, pYuvBuf, bufLen*sizeof(unsigned char));  
        cv::Mat rgbImg;  
        cv::cvtColor(yuvImg, rgbImg, CV_YUV2BGR_I420);  
  
        cv::imshow("img2", rgbImg);//然后发现rgbImg泛白比较严重
        cv::waitKey(0); 
  
  
        fclose(pFileIn);

有没有大神说说原因,之前看到有人说是精度损失,要是知道的大神,说一下具体原因



加载中
0
quanwei9958
quanwei9958



YUV 进行 RGB 转换的时候会丢失部分精度,不过不会造成泛白过于严重。

不知道你代码中的 h*3/2 什么意思?难道不应该是 h/2,w*3 ?

返回顶部
顶部