【OpenCV】正确创建用于保存YUV420P格式的cv::Mat

133 篇文章 144 订阅 ¥69.90 ¥99.00
这篇博文介绍了在使用OpenCV处理YUV420P格式图像时遇到的问题及解决方案。创建cv::Mat保存YUV420P时,直接传入宽度和高度只能保存Y分量。正确做法是保持宽度不变,高度乘以1.5,以确保保存完整数据。同时注意cv::Mat构造函数中参数顺序为高度在前,宽度在后。
摘要由CSDN通过智能技术生成

【目录】郭老二博文之:图像视频汇总

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、解决方法</

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭老二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值