博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【OpenCV】正确创建用于保存YUV420P格式的cv::Mat
阅读量:4263 次
发布时间:2019-05-26

本文共 516 字,大约阅读时间需要 1 分钟。

1、问题描述

cv::Mat保存RGB24或BRG24格式时,传入宽、高和格式类型CV_8UC3就行了;今天在创建cv::Mat用来保存YUV420P时,有点懵圈了,因为类型是CV_8UC1,直接传宽和高,只能保存Y分量。因此需要宽或者高乘以一个系数,才能保存完整。

一开始我将,这个系数1.5乘给了宽,并将宽width赋值给了行数rows:

cv::Mat yuv420p(width*3/2, height, CV_8UC1);

一条语句,反了两个错误:

首先,以惯性思维,理所当然的认为cv::Mat构造函数的第一个参数是宽;其实是rows,代表多少行,也就是图像的高。
其次,应该保持宽不变,高乘以1.5倍,才能正确表示YUV420P。宽不变才能从数据区一行一行取出数据,正确表达一帧图像。

2、解决方法
cv::Mat yuv420p (height*3/2, width, CV_8UC1);

或者

cv::Mat yuv420p;yuv420p.create(height*3/2, width, CV_8UC1);
3、注意

cv::Mat中构造函数、成员函数的参数是先高height 后宽width的顺序处理参数。

转载地址:http://zcmei.baihongyu.com/

你可能感兴趣的文章
boost多线程库之准备动作
查看>>
gcc和boost的升级步骤(非root权限)
查看>>
自己编写Python连接MySQL的支持
查看>>
掰开揉碎机器学习系列-决策树(1)-ID3决策树
查看>>
python的引用和浅拷贝和p深拷贝
查看>>
掰开揉碎机器学习系列-决策树(2)-CART决策树
查看>>
python2.7 安装multiprocessing的正确姿势
查看>>
manacher算法计算最长回文子串
查看>>
二叉查找树(BST)
查看>>
堆(二叉堆)
查看>>
AVL平衡二叉树
查看>>
字符串匹配的KMP算法
查看>>
字符串左右旋转问题
查看>>
字符串是否包含问题
查看>>
排序1:交换排序(冒泡排序+快速排序)
查看>>
排序2:选择排序(选择排序+堆排序)
查看>>
排序3:插入排序(普通插入排序 + 折半插入排序 + 链表插入排序 + 希尔排序)
查看>>
排序4:普通归并排序
查看>>
排序4:多路归并排序之预备:胜者树与败者树
查看>>
浮华背后与我的路-----关于华为裁员
查看>>