项目用到opencv 融合图片的功能,经过一天的调试,达到预期目标,先将如何调用opencv库实现YUV42与Mat互转记录下来。

一.下载opencv编译的库下载地址是:http://opencv.org/releases.html ,根据需要选择相应的版本,我们项目中用到的版本是2.4.13。

二.下载Eigen库,下载地址是:http://eigen.tuxfamily.org/index.php?title=Main_Page,将Eigen库解压到本地,引用opencv库是要用到

Eigen库(例如解压后的目录是F:\vs2015-project\CGFusePlay\lib\eigen-eigen-da9b4e14c255,将路径F:\vs2015-project\CGFusePlay\lib\eigen-eigen-da9b4e14c255\Eigen

添加到编译工程中),否则会编译不通过。

三,将YUV420数据与Mat互转:

	mainYUuvImage.create( mainHeight * 3 / 2, mainWidth, CV_8UC1);
CopyYUVToImage(mainYUuvImage.data, mainY, mainU, mainV, mainWidth, mainHeight);
cv::Mat mainRgbImage;
cv::cvtColor(mainYUuvImage, mainRgbImage, CV_YUV2BGR_I420); cv::Mat subYuvImage;
subYuvImage.create(subHeight * 3 / 2,subWidth, CV_8UC1);
CopyYUVToImage(subYuvImage.data, subY, subU, subV, subWidth, subHeight);
cv::Mat subRgbImage;
cv::cvtColor(subYuvImage, subRgbImage, CV_YUV2BGR_I420); double alpha = 0.5;
cv::Mat dstRgbImage; cv::Mat dstYuvImage;
cv::cvtColor(dstRgbImage, dstYuvImage, CV_BGR2YUV_I420); CopyImageToYUV(mainY, mainU, mainV, dstYuvImage.data,mainWidth, mainHeight);
static void CopyYUVToImage(uchar * dst ,uint8_t *pY, uint8_t *pU , uint8_t *pV,int width, int height)
{
  uint32_t size = width * height;
  memcpy(dst, pY, size);
  memcpy(dst + size, pU, size /4);
  memcpy(dst + size + size /4, pV, size / 4);
} static void CopyImageToYUV(uint8_t *pY, uint8_t *pU, uint8_t *pV, uchar * src ,int width, int height)
{
  uint32_t size = width * height;
  memcpy(pY, src, size);
  memcpy(pU, src + size, size / 4);
  memcpy(pV, src + size + size / 4, size / 4);
}

  


  

如需交流,可以加QQ群1038388075,766718184,或者QQ:350197870

博主提供ffmpeg 视频教程 播放地址: http://www.iqiyi.com/u/1426749687

视频下载地址:http://www.chungen90.com/?news_3/

Demo下载地址: http://www.chungen90.com/?news_2

opencv yuv420与Mat互转的更多相关文章

  1. OpenCV不同类型Mat的at方法访问元素时该如何确定模板函数的typename(转)

    自从OpenCV推出了Mat后越来越像是Matlab了,使用起来方便了很多,但是,在用at方法访问Mat时,如何选用合适的typename类型来访问相应的Mat元素是个头疼的问题. 比如: int H ...

  2. OpenCV中对Mat里面depth,dims,channels,step,data,elemSize和数据地址计算的理解

    原文:OpenCV中对Mat里面depth,dims,channels,step,data,elemSize和数据地址计算的理解 Title : cv::Mat depth/dims/channels ...

  3. Visual Studio 控制台应用程序 同时使用OpenCV和matlab mat文件操作

    matalb具有灵活的图像处理,代码编写起来简洁而高效.而OpenCV具有很多成熟的计算机视觉算法,能够处理很多实时的识别处理等问题,而且代码运行起来效率很高.所以如何结合两者之间的优点,是让很多学术 ...

  4. 【编程开发】opencv实现对Mat中某一列或某一行的元素进行normalization

    [编程开发]opencv实现对Mat中某一列或某一行的元素进行normalization 标签: [编程开发] [机器学习] 声明:引用请注明出处http://blog.csdn.net/lg1259 ...

  5. opencv中的Mat类型

    Mat类型主要是跟matlab中的数据类型一样.故用起来很方便. Mat最大的优势跟STL很相似,都是对内存进行动态的管理,不需要之前用户手动的管理内存,对于一些大型的开发,有时候投入的lpImage ...

  6. OpenCV教程二 - Mat对象与它各种用法

    学习OpenCV大家都会遇到一个对象叫做Mat,此对象非常神奇,支持各种操作.很多初学者因此被搞得头晕脑胀,它各种用法太多太杂,搞得初学者应接不暇,感觉有心无力.无处下手之感.这里我们首先要正本清源, ...

  7. OpenCV二维Mat数组(二级指针)在CUDA中的使用

    CUDA用于并行计算非常方便,但是GPU与CPU之间的交互,比如传递参数等相对麻烦一些.在写CUDA核函数的时候形参往往会有很多个,动辄达到10-20个,如果能够在CPU中提前把数据组织好,比如使用二 ...

  8. [OpenCV] GpuMat and Mat, compare cvtColor perforemence

    Introduction I am going to measure the performence of my two GT650M and compare GPU with CPU version ...

  9. 第二章:Opencv核心類Mat

    Opecv就是做計算機視覺,就是讲图片转换成计算机所能识别的数据 Mat类中由大量的内联函数,主要就是用于提高速度. 一般类型都用rgb,存的时候用CV_8UC3.create函数一般会把原来的空间释 ...

随机推荐

  1. [python学习篇][书籍学习][python standrad library][内建函数]之[all,any,basestring,isinstance,bin,bool,@classmethod,@staticmethod,cmp,enumerate

    Python 解释器内置了一些函数,它们总是可用的.这里将它们按字母表顺序列出.     Built-in Functions     abs() divmod() input() open() st ...

  2. Ruby 符号【转】

    Ruby的符号足以让很多初学者迷惑上一段时间,看过本章节后,或许会解开你心中的疑惑. 在Ruby中,一个符号是就是一个Symbol类的实例,它的语法是在通常的变量名前加一个冒号,如 :my_sy Ru ...

  3. 什么是WSDL

    WSDL定义 WSDL(Web Service Description Language) 指网络服务描述语言:是一种用来描述Web服务和说明Web服务通信的XML.WSDL用于描述WebServic ...

  4. 九度oj 题目1365:贝多芬第九交响曲

    现在在一块空的场地上会有一个大的二维棋盘,裁判会给你指定初始位置及一座贝多芬雕像所处的位置,你开始时就站在裁判指定的初始位置处,你的目标是跳到贝多芬雕像的位置.为了给比赛增加一定的难度,你在棋盘上行走 ...

  5. ajax提交数据服务端返回报错

    报错如下: if response.get('X-Frame-Options') is not None:AttributeError: 'str' object has no attribute ' ...

  6. 【bzoj4031】[HEOI2015]小Z的房间 && 【bzoj4894】天赋 (矩阵树定理)

    来两道矩阵树模板: T1:[bzoj4031][HEOI2015]小Z的房间 Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形 ...

  7. Definition vs declaration

    #include <stdio.h> union test1; // declaration union test2 { // The definition of union test2 ...

  8. Chtml的一些例子

    <!-- 如果是修改的话,调用已关联的单元 --> <?php foreach ($unionZones as $unit) { echo CHtml::openTag('div', ...

  9. Servlet 2.4 规范之第三篇:Servlet生命周期

        SRV.2.3    Servlet生命周期 servlet有着定义良好且明确的生命周期,它定义了servlet以怎样的方式加载和实例化.初始化.怎样处理客户端请求.以及怎样停止服务.生命周期 ...

  10. AC日记——[SCOI2010]游戏 bzoj 1854

    1854: [Scoi2010]游戏 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 4938  Solved: 1948[Submit][Status] ...