• 5091阅读
  • 2回复

[提问]在windows下使用DirectShow显示到QImage [复制链接]

上一主题 下一主题
离线xiaowei
 

只看楼主 倒序阅读 楼主  发表于: 2015-03-18
我现在在做window下使用directshow显示USB摄像头图像,并转换成QImage,然后使用QZxing进行二维码解码,现在已经可以在界面上正常显示,并且也可以通过BufferCB获取每一帧图像的数据流BYTE* pBuffer,想问下怎么样把pBuffer转换成QImage。各位有做过类似的吗
离线xuang

只看该作者 1楼 发表于: 2015-03-19
试试QImage的这几个构造函数:
QImage::​QImage(uchar * data, int width, int height, Format format, QImageCleanupFunction cleanupFunction = 0, void * cleanupInfo = 0)
QImage::​QImage(const uchar * data, int width, int height, Format format, QImageCleanupFunction cleanupFunction = 0, void * cleanupInfo = 0)
QImage::​QImage(uchar * data, int width, int height, int bytesPerLine, Format format, QImageCleanupFunction cleanupFunction = 0, void * cleanupInfo = 0)
QImage::​QImage(const uchar * data, int width, int height, int bytesPerLine, Format format, QImageCleanupFunction cleanupFunction = 0, void * cleanupInfo = 0)
文档里写得很详细。
实在不行就new一个QImage,然后对bits()指向的内存赋值。
离线xiaowei

只看该作者 2楼 发表于: 2015-03-19
回 xuang 的帖子
xuang:试试QImage的这几个构造函数:
QImage::​QImage(uchar * data, int width, int height, Format format, QImageCleanupFunction cleanupFunction = 0, void * cleanupInfo = 0)
QImage::​QImage(const uchar * data, int width, int height, Format format, QImageClea .. (2015-03-19 09:17) 

谢谢您啊,这些方法我都试了不太行。最后我解决了,因为我的摄像头的数据是YUV422的格式,开始我直接把YUV422的数据转到QImage里,无论如何都不成功,后来把YUV422转换成RGB32之后再Load到QImage就成了。谢谢啊
快速回复
限100 字节
 
上一个 下一个