YUV422格式信号格式(以备学习之用)

YUV信号有很多种,一般YUV420和YUV422用的比较多,

       YUV422格式,又分为很多小类,按照U、V的排列可以有YUYV,YVYU,UYVY,VYUY四种,其中,YUYVY一般又称作yuv2格式。

       而这四种YUV422格式,每种又可以分为2小类,按Y和UV的排列可以有打包格式和平面格式。例如,一个640×480×2的YUV文件,打包格式就是YUYVYUYV这样一直排列下去,平面格式就是先640×480个Y排列完,然后是640×240个U,然后是640×240个V这样排列,如下图:

      
      假如有一幅640×480的图片,用yuv422来表示,那么,采样方式就是每个像素采样Y信号,U,V信号隔一个采样,这样算下来,就有640×480个Y,640×240个U,640×240个V,一幅640×480大小的YUV图片占的总字节数为640×480×2个字节,每像素2个字节,也就是16位。

     在内存种这样排列:Y0U0Y1V0 Y2U1Y3V1...

    第一个像素的YUV值为:Y0 U0 V0

   第二个像素的YUV值为: Y1 U0 V0

   第三个像素的YUV值为: Y2 U1 V1

.....其他以此推类,也就是说每两个像素是共用了UV的;在一行上来看,每个像素的YUV值种Y值被采样,UV值采样0后,跳到3,然后5,所以每行上Y有640个,U,V各320个

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将YUV422格式的CBYCRY排序转换为YUV422格式的YCBYCR排序,您可以使用以下C++代码: ```cpp #include <opencv2/opencv.hpp> int main() { // 读取CBYCRY图像 cv::Mat img_cbycry = cv::imread("input.cbycry", cv::IMREAD_UNCHANGED); // 获取图像尺寸 int width = img_cbycry.cols; int height = img_cbycry.rows; // 计算输出图像大小 int output_width = width / 2; // 创建输出YUV422图像 cv::Mat img_ycbycr(height, output_width, CV_8UC4); // CBYCRY到YUV422转换 for (int y = 0; y < height; y++) { for (int x = 0; x < output_width; x++) { // 获取CB和CR分量的值 uchar cb = img_cbycry.at<cv::Vec3b>(y, x * 2)[0]; uchar cr = img_cbycry.at<cv::Vec3b>(y, x * 2 + 1)[2]; // 设置输出图像的像素值 img_ycbycr.at<cv::Vec4b>(y, x) = cv::Vec4b(cb, img_cbycry.at<cv::Vec3b>(y, x * 2)[1], cr, img_cbycry.at<cv::Vec3b>(y, x * 2)[2]); } } // 保存输出YUV422图像 cv::imwrite("output.ycbycr", img_ycbycr); return 0; } ``` 在上述代码中,首先使用`cv::imread`函数加载CBYCRY图像,然后获取图像的宽度和高度。接下来,计算输出图像的宽度,因为每个像素在YUV422格式中占据2个字节的空间。然后,创建一个与输出图像尺寸相同的YUV422图像。 通过双重循环遍历输入图像的每个像素,根据CBYCRY排序提取CB和CR分量的值,并将它们设置为输出图像的像素值。注意,在YUV422格式中,每个像素由Y、Cb、Y、Cr四个分量组成,因此需要正确设置输出图像中的分量顺序。 最后,使用`cv::imwrite`函数保存输出YUV422图像。 请注意,上述代码假设输入的CBYCRY图像是按照CBYCRYCBYCRY...的顺序存储的,如果存储顺序不同,您可能需要调整代码中的索引操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值