qimage::fromData获取RGB数据怎么判断图片尺寸

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qimage::fromData获取RGB数据怎么判断图片尺寸相关的知识,希望对你有一定的参考价值。

参考技术A 采用scanLine(int)来获取每行的首地址。
索引就不会出现图像数据偏移的问题。
你需要首先计算出,你的图像的真实数据量(字节数), 可以根据QImage.byteCount()函数来获取图像的字节数,计算公式 byteCount = height * W。

如何从AVFrame:data里获取RGB24数据和YUYV422数据

参考技术A 我用img_convert转换了解码后的图象为RGB24,确保转换是正确的,取出数据来播放还是不正常。
我又转为YUYV422,还是不正常。
反正就是数据没取对。

我是从AVFrame::data[0]直接把数据Copy过来显示,
要么图象只显示到上半窗口,要么重复了几个播放图象,怎么弄都不正确
请问,怎么取这两种格式的图象数据啊?

解答问题
从AVFrame::data[0]里获取RGB24 或者 YUYV422,或者 UYVY422 都只是从data[0]里获取就可以了,忽略data[1], data[2], data[3];
其次,我由于使用了img_convert进行了到上述目标格式的转换,但是却为转换用的AVPicture变量,调用avpicture_alloc指定的目标格式还是
PIX_FMT_YUV420P,也就是说,分配的目标格式和转换的目标格式不匹配对应。
因此,可能一方面导致AVPicture变量中的目标格式不正确,还导致其分配的缓冲区太小,从而导致后来取数据不正确,结果图象被隔行采样,实际视频高少了一
半。

其实只要分配和转换不发生任何问题,就只需要从AVFrame::data[0]直接Copy数据即可,而Copy数据的长度,即是一帧BMP图片的大小。
唯有RGB24,这样一次Copy,显示后,图象倒置,需要进行一行一行Copy,才正确。

以上是关于qimage::fromData获取RGB数据怎么判断图片尺寸的主要内容,如果未能解决你的问题,请参考以下文章

如何从窗口获取像素数据\像素缓冲区并提取RGB?

在google和火狐赌暌姑jquery获取颜色为rgb,怎么转换成为#CCDDFF这种颜色呢

怎么将bitmap的RGB值传给二维数组

用js获取页面颜色值怎么比较?

用opencv如何提取像素点的RGB分量

旋转、改变颜色并从 NSImage 获取 RGB565 数据