YUV图像

YUV420P,Y,U,V三个分量都是平面格式,分为 I420 YV12 I420 格式和 YV12 格式的不同处在U平面和V平面的位置不同。在I420格式中,U平面紧跟在Y平面之后,然后才是V平面(即:YUV);但YV12则是相反(即:YVU)。

YUV420SP, Y分量平面格式,UV打包格式, 即NV12。 NV12与NV21类似,U 和 V 交错排列,不同在于UV顺序。

I420: YYYYYYYY UU VV    =>YUV420P

YV12: YYYYYYYY VV UU    =>YUV420P

NV12: YYYYYYYY UVUV     =>YUV420SP

NV21: YYYYYYYY VUVU     =>YUV420SP

 

dxva 输出 NV12

x264 输入、输出 I420

 

void yuv420p_to_yuv422(uint8_t * yuv420[3], uint8_t * dest, int width,
                        int height)
{
    unsigned int x, y;
 
 
     for (y = 0; y < height; ++y) {
       uint8_t *Y = yuv420[0] + y * width;
        uint8_t *Cb = yuv420[1] + (y / 2) * (width / 2);
       uint8_t *Cr = yuv420[2] + (y / 2) * (width / 2);
        for (x = 0; x < width; x += 2) {
             *(dest + 0) = Y[0];
           *(dest + 1) = Cb[0];
           *(dest + 2) = Y[1];
            *(dest + 3) = Cr[0];
             dest += 4;
             Y += 2;
             ++Cb;
             ++Cr;
         }
     }
}

 

 

YUV420P

最近一周整理了一下网上关于YUV数据的转化和显示方面的资料, 与大家共享一下.

 

1. 关于YUV.

百度百科: http://baike.baidu.com/view/189685.htm

英文资料: http://en.wikipedia.org/wiki/YUV#Y.27UV420p_.28and_Y.27V12.29

YUV转换算法http://www.kldby.com/baidunews/index.php/article/jdgg/2010-10-04/10436.html

YUV格式http://www.fourcc.org/yuv.php

自定义数据结构参考http://www.rosoo.net/a/200604/6051.html

 

2. YUV数据的显示.

目前尝试了两种显示YUV数据的方法 YUV表面显示和GDI显示.

YUV表面显示:

     这个网上有很多源码, 当然为了大家省去一些查找和编译的苦恼, 提供我整理后的源码.

这种显示方式呢, 比较直接, CPU占用也不是很高, 而且不管是YUV420还是YUV420P(分辨率1280*720)都可以显示出来.

但是有一个缺点是: 只能创建一个显示画面, 就是要同时显示几个画面是不行的, 而且按下WIN键和D后, 画面还在屏幕上,

很无语. (我不确定此点是否正确, 我在一天之内没突破它的这个缺点后放弃).

 

GDI显示:

   就是用相关算法将YUV420P数据--->RGB24之后,使用StretchDIBits函数将每一帧的图像显示出来.

   在转化算法方面, 在网上找到不止10几种, 除去一些存在错误无法编译的外, 筛选了5种方法.

   此种显示方法上, CPU占用肯定比YUV表面显示高, 但至少可以多画面显示了,并且没有其他缺点.

   转化算法见下一篇随笔.

 

YUV420 显示源码 http://files.cnblogs.com/doorsky/YUV%e6%98%be%e7%a4%ba.rar

YUV文件 http://files.cnblogs.com/doorsky/YUV%e6%96%87%e4%bb%b6.rar

 

(在本文中,U 一词相当于 Cb,V 一词相当于 Cr。)

YUV422 format as shown below

4:2:2 表示 2:1 的水平取样,没有垂直下采样

 

YUV420 format as shown below
4:2:0 表示 2:1 的水平取样,2:1 的垂直下采样. YUV4:2:0并不是说只有U(即 Cb), V(即 Cr)一定为 0,而是指U:V互相援引,时见时隐,也就是说对于每一个行,只有一个U或者V份量,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0...以此类推。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

色调映射(Tone Mapping)

一、概述 虽然HDR 图像有较大的动态范围,能更细致地反映真实场景,但他的缺点也很明显。一是同尺寸的数据比低动态范围图像大,需要更大的存储空间与传输带宽。二是难以输出,目前大多数显示器、打印机等图形输出设备的动态范围要比普通的高动态范围图像小得多。。因此,色调映…

YUV格式详解

分类&#xff1a; H.264 MPEG TV 2008-05-14 09:24 16181人阅读 评论(21) 收藏 举报 YUV是指亮度参量和色度参量分开表示的像素格式&#xff0c;而这样分开的好处就是不但可以避免相互干扰&#xff0c;还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说…

KVM安装、镜像创建(一)

环境准备 VMware Workstation Pro启动虚拟化 查看启动的系统是否支持vmx或svm grep -E (vmx|svm) /proc/cpuinfo 备注&#xff1a;操作系统centos 7 KVM安装 1、yum查看kvm安装包 yum list |grep kvm 2、安装 yum install -y qemu-kvm qemu-kvm-tools libvirt3、启动libvirtd s…

Sensor 结构——前照、背照、堆栈

优异的工艺和技术可以使得即便不使用更新结构的CMOS,同样拥有更好的量子效率、固有热噪声、增益、满阱电荷、宽容度、灵敏度等关键型指标。在相同技术和工艺下,底大一级的确压死人(全画幅和aps-c)。人类的进步就是在不断发现问题,解决问题。背照式以及堆栈式CMOS的出现,也…

可测性设计技术

传统的设计过程和测试过程是分开的&#xff0c;而且测试往往只在设计阶段的后期才被考虑。近年来&#xff0c;测试越来越早地被考虑并出现在设计过程中&#xff0c;被称为“可测性设计”。可测性设计的主要思路就是在设计之初就考虑关于测试方面的设计&#xff0c;并在设计阶段…

pthread_cond_wait

1. 首先pthread_cond_wait 的定义是这样的 The pthread_cond_wait() andpthread_cond_timedwait() functions are used to block on a condition variable. They are called withmutex locked by the calling thread or undefined behaviour will result. These functions ato…

HDU 1525 Euclid's Game

题目大意&#xff1a; 题目给出了两个正数a.b 每次操作&#xff0c;大的数减掉小的数的整数倍。一个数变为0 的时候结束。 谁先先把其中一个数减为0的获胜。问谁可以赢。Stan是先手。 题目思路&#xff1a; 无论a,b的值为多少&#xff0c;局面&#xff1a;[a%b&#xff0c;b] 一…

SRAM BIST技术学习

MBIST 方法是目前大容量存储器测试的主流技术&#xff0c;该技术利用芯片内部专门设计的BIST 电路进行自动化测试&#xff0c;能够对嵌入式存储器这种具有复杂电路结构的嵌入式模块进行全面的测试。MBIST 电路将产生测试向量的电路模块以及检测测试结果的比较模块都置于芯片的内…

【Zigbee技术入门教程-02】一图读懂ZStack协议栈的核心思想与工作机理

【Zigbee技术入门教程-02】一图读懂ZStack协议栈的核心思想与工作机理 广东职业技术学院 欧浩源 Z-Stack协议栈是一个基于任务轮询方式的操作系统&#xff0c;其任务调度和资源分配由操作系统抽象层OSAL管理着。 你可以理解为&#xff1a;Z-Stack协议栈 OSAL操作系统 CC25…

Servlet第二篇【Servlet调用图、Servlet细节、ServletConfig、ServletContext】

Servlet的调用图 前面我们已经学过了Servlet的生命周期了&#xff0c;我们根据Servlet的生命周期画出Servlet的调用图加深理解 Servlet的细节 一个已经注册的Servlet可以被多次映射 同一个Servlet可以被映射到多个URL上。 <servlet><servlet-name>Demo1</servle…

自动对焦方法学习

实现自动对焦的方法有很多种,可以根据不同的工作原理,将自动对焦技术分成不同种类。 按照系统是否自带信号发射系统,可以分为主动式与被动式两种类型。 主动式对焦方法是由成像系统中的发射装置发出信号,然后再由接收装置接收从被摄景物所反射回来的反馈信号并利用通过计算…

微粒化运营:升级内容产业消费体验(附视频版)

那些最受欢迎的内容平台做对了什么&#xff1f; Facebook和Google是全球互联网广告产业中最早开始微粒化运营的代表&#xff0c;Google的互联网精准广告的思路与微粒化运营是完全相同的&#xff0c;这两家公司也因此获得了全球超过20%的互联网广告的收入。 以Facebook为例&…

chisel快速入门(一)

一、概述 Chisel&#xff08;Constructing Hardware In a Scala Embedded Language&#xff09;是一种嵌入在高级编程语言Scala的硬件构建语言。Chisel实际上只是一些特殊的类定义&#xff0c;预定义对象的集合&#xff0c;使用Scala的用法&#xff0c;所以在写Chisel程序时实际…

U盘基本处理,U盘与移动固态硬盘

一、辨别 USB2.0 和 USB3.0 1、从USB外观上来看&#xff0c;USB2.0通常是白色或黑色&#xff0c;而USB3.0则改观为“高大上”的蓝色接口。 目前&#xff0c;部分笔记本电脑USB接口&#xff0c;已同时提供对USB2.0及USB3.0的支持&#xff0c;我们可以通过接口颜色来区别。 2、从…

UWP_小说在线阅读器:功能要求与技术要求

注&#xff1a;2017年2月23日正式提上日程 学了WP开发也有一年了&#xff0c;也没做过什么软件的。17年进发UWP&#xff0c;锻炼自己一下。做一个开源的小说阅读器吧。 既然开发一个软件。所以要设计一下吧。 功能要求&#xff1a; 可能要用到的技术&#xff0c;这个吗&#xf…

chisel快速入门(二)

上一篇见此&#xff1a; chisel快速入门&#xff08;一&#xff09;_沧海一升的博客-CSDN博客简单介绍了chisel&#xff0c;使硬件开发者能快速上手chisel。https://blog.csdn.net/qq_21842097/article/details/121415341 十、运行和测试 现在我们已经定义了模块&#xff0c;…

【WPF】设置TextBox内容为空时的提示文字

原文:【WPF】设置TextBox内容为空时的提示文字<TextBox Width"150" Margin"5"><TextBox.Resources><VisualBrush x:Key"HintText" TileMode"None" Opacity"0.5" Stretch"None" AlignmentX"Le…

读书笔记之《The Art of Readable Code》Part 2

如何写好流程控制语句(if-else/switch/while/for)使得代码更可读些&#xff1f;(chap 7)* 提高条件语句的可读性(if语句, 或者bool型summary变量) if (length > 10) // Good if (10 < length) // Badwhile (bytes_received < bytes_expected) // Good while (b…

chisel快速入门(三)

前一篇见此&#xff1a; chisel快速入门&#xff08;二&#xff09;_沧海一升的博客-CSDN博客简单介绍了chisel&#xff0c;使硬件开发者能快速上手chisel。https://blog.csdn.net/qq_21842097/article/details/121418806 十四、模块的功能创建 制造用于模块构造的功能接口也…

Redis作者摊上事了:多人要求修改Redis主从复制术语master/slave

作者 | ANTIREZ、小智近日&#xff0c;Redis 作者在 GitHub 上发起了一个“用其他词汇代替 Redis 的主从复制术语”的 issue。有人认为 Redis 中的术语 master/slave &#xff08;主人 / 奴隶&#xff09;冒犯到了别人&#xff0c;要求 Redis 作者 ANTIREZ 修改这个术语&#x…