这是我的第一篇帖子,所以请耐心等待。 我对Directshow和C ++编程很陌生,但在花了几个小时寻找这个具体答案之后,我不禁在这里问我的问题。
我正在研究Viveks着名的VCam样本。它来自Directshow 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方法中。
但我得到的是与此相比。
我使用的每个位图的输出看起来都不一样,所以我可以看到数据随图像而变化。但由于某种原因,它不会被识别为位图。
我完全没有想法。所以我很乐意收到一些建议,说明我做错了。
答案 0 :(得分:1)
这是一个经典之作。您在MediaType中遇到image stride时遇到问题。这是一个有同样问题的问题:stackoverflow.com/a/20054011/399561