如何从内存中读取原始图像 (YUV 4:2:2) 格式的图像数据

How to Read raw (YUV 4:2:2) format Image data from the memory

本文关键字:图像 数据 格式 YUV 内存 原始 读取      更新时间:2023-10-16

>我正在尝试从读取缓冲区读取原始 YUV 4:2:2 (720p( 数据,我将读取缓冲区的物理地址映射到虚拟地址。

mem 是指向读取缓冲区基址的指针。我尝试使用下面提到的代码,但它返回空图像,请有人帮我从内存中读取原始 YUV 4:2:2 格式的图像数据。

我已经尝试了下面提到的代码,但我返回的是空图像

cv::Mat img(1,1280 , numCols,CV_8U1, mem);
//mem -> mem is a pointer to Read buffer which have raw YUV 4:2:2 image data .
//len-> Frame resolution (1280 * 720 * 3) (720p)
if (img.empty())
{
cout << "Image is not loaded" << endl;
return 0;
} 
cv::imshow("img",img);  
cv::waitKey();

原始 YUV 4:2:2 图像的大小 = 2 * 高度 * 宽度。您需要创建:

cv::Mat img(2 * height, width, CV_8UC1, mem, sizeOfRowInBytes);

Y 通道将位于第一个高度*大小的行字节中。之后将是紫外线通道:

    一半与
  1. 你行,一半与V行;

  2. 一半与
  3. 你行,一半与V行;

高度。一半

与你行,一半与V行。