位图数据显示乱码

Posted

技术标签:

【中文标题】位图数据显示乱码【英文标题】:Garbled display of bitmap data 【发布时间】:2016-06-06 17:07:59 【问题描述】:

这是我第一次发帖,请多多包涵。 我对 Directshow 和 C++ 编程还很陌生,但是在花了几个小时寻找这个具体答案之后,我忍不住在这里问我的问题。

我正在研究 Viveks 著名的 VCam 示例。它源自 Directshow Pushsource 示例,因此我认为显示 Pushsource 示例显示良好的 bmp 应该是可行的。

根据此来源https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/11560cfc-41cc-4586-ada5-c1847b27b3f6/vcamax-input?forum=windowsdirectshowdevelopment,魔法发生在 FillBuffer 方法中。所以我相应地按照 Pushsource 示例加载位图,但我得到的只是乱码输出,如下所示:ISampleGrabber::BufferCB to IplImage; display in OpenCV shows garbled image - C++

所以我做错了,一次又一次地完成了样本的所有步骤,但看不出有多大区别。 这是我所做的: 1.加载位图 2. 将位图复制到缓冲区中 3.使用memcpy将缓冲区复制到FillBuffer方法中。

但我得到的是这个与这个相比。

original and distortion

我使用的每个位图的输出看起来都不同,所以我可以看到数据随着图像的变化而变化。但由于某种原因,它没有被识别为位图。

我完全没有想法。所以我很高兴收到一些我做错了什么的建议。

【问题讨论】:

那是经典的。图像步幅有问题:msdn.microsoft.com/en-us/library/windows/desktop/… 和这里:***.com/a/20054011/399561 很遗憾,我不能接受您的评论作为答案。我相信这是一种由媒体类型的固定宽度和高度引起的跨步问题。当我手动设置尺寸时,图像显示没有问题。 【参考方案1】:

这是一个经典的。您的 MediaType 中的 image stride 有问题。这是一个有同样问题的问题:***.com/a/20054011/399561

【讨论】:

以上是关于位图数据显示乱码的主要内容,如果未能解决你的问题,请参考以下文章

MFC 显示位图 缩放与拖动的矛盾

Qt 如何从 QVector 中的数据创建位图并将其显示在小部件上?

MySQL命令窗口下中文显示乱码的解决过程

我想了解位图、像素等相关基础知识

解决jmeter做接口测试时响应数据中文显示乱码或者Unicode码的问题

位图像素