2016-06-06 50 views
0

這是我第一篇文章,請耐心等待。 我對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方法中。

但我得到的是與此相比的。

original and distortion

輸出看起來與每一個位圖我用不同的,所以我可以看到,與圖像數據的變化。但由於某些原因,它不會被識別爲位圖。

我完全沒有想法。所以我很樂意收到一些建議,我做錯了什麼。

+1

這是一個典型的問題。您有圖像跨越的問題:https://msdn.microsoft.com/en-us/library/windows/desktop/aa473780(v=vs.85).aspx和這裏:http://stackoverflow.com/a/20054011/399561 – CPlusSharp

+0

可悲的是,我無法接受你的評論作爲答案。我相信這是由媒體類型的固定寬度和高度引起的一種跨步問題。 當我手動設置尺寸時,圖像顯示沒有問題。 – Tyrone

回答