c/c++语言开发共享YUV420到RGB颜色转换错误

我正在converting YUV420格式的图像convertingopencv RGB图像,但conversion.后我得到的是Orange图像conversion. 我使用以下代码来做到这一点。 我的代码有问题吗?

  int step = origImage->widthStep; uchar *data = (uchar *)origImage->imageData; int size = origImage->width * origImage->height; IplImage* img1 = cvCreateImage(cvGetSize(origImage), IPL_DEPTH_8U, 3); for (int i = 0; iheight; i++) { for (int j=0; jwidth; j++) { float Y = data[i*step + j]; float U = data[ (int)(size + (i/2)*(step/2) + j/2) ]; float V = data[ (int)(size*1.25 + (i/2)*(step/2) + j/2)]; float R = Y + (int)(1.772f*V); float G = Y - (int)(0.344f*V + 0.714f*U); float B = Y + (int)(1.402f*U); if (R < 0){ R = 0; } if (G < 0){ G = 0; } if (B  255 ){ R = 255; } if (G > 255) { G = 255; } if (B > 255) { B = 255; } cvSet2D(img1, i, j,cvScalar(B,G,R)); } } 

origImage – > YUV图片,
img1 – > RGB图像,

https://upload.wikimedia.org/wikipedia/en/0/0d/Yuv420.svg

是否有任何opencv函数可以将YUV420格式的pixel转换为相应的RGB像素? (不是整个图像)

    我通过修改计算RGB值的公式得到了答案,这段代码工作正常

      int step = origImage->widthStep; uchar *data = (uchar *)origImage->imageData; int size = origImage->width * origImage->height; IplImage* img1 = cvCreateImage(cvGetSize(origImage), IPL_DEPTH_8U, 3); for (int i = 0; iheight; i++) { for (int j=0; jwidth; j++) { float Y = data[i*step + j]; float U = data[ (int)(size + (i/2)*(step/2) + j/2) ]; float V = data[ (int)(size*1.25 + (i/2)*(step/2) + j/2)]; float R = Y + 1.402 * (V - 128); float G = Y - 0.344 * (U - 128) - 0.714 * (V - 128); float B = Y + 1.772 * (U - 128); if (R < 0){ R = 0; } if (G < 0){ G = 0; } if (B < 0){ B = 0; } if (R > 255 ){ R = 255; } if (G > 255) { G = 255; } if (B > 255) { B = 255; } cvSet2D(img1, i, j,cvScalar(B,G,R)); } } 

    第一个问题是使用过时的c-api(它已经死了并且已经消失了。请使用c ++代替)。

    第二个问题是编写自己的(缓慢且容易出错的)像素循环

    为什么不使用:

     cvtColor(crs,dst, CV_YUV2BGR); // or CV_YUV2BGR_I420 

    相反?

    需要了解更多c/c++开发分享YUV420到RGB颜色转换错误,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享YUV420到RGB颜色转换错误相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980110.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐