2016-06-06 11 views
0

Это мое первое сообщение, поэтому, пожалуйста, несите меня. Я довольно новичок в программировании на Directshow и C++, но после того, как тратил часы после рабочего дня на поиск этого конкретного ответа, я не могу не задавать свой вопрос здесь.Гармовое отображение растровых данных

Я работаю над Viveks известным образцом VCam. Он получен из образца Directshow Pushsource, поэтому я подумал, что он должен быть работоспособен для отображения BMP, который показывает пример Pushsource.

Согласно этому источнику https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/11560cfc-41cc-4586-ada5-c1847b27b3f6/vcamax-input?forum=windowsdirectshowdevelopment магия происходит в методе FillBuffer. Поэтому я последовал примеру Push-источника, чтобы загрузить растровое изображение, но все, что я получаю, является искаженным результатом, аналогичным показанному здесь: ISampleGrabber::BufferCB to IplImage; display in OpenCV shows garbled image - C++

Так что я делаю что-то неправильно и все время повторяю все шаги образцов много разница. Вот что я делаю: 1. Загрузите растровое изображение 2. Скопируйте растровое изображение в буфер 3. Скопируйте буфер в метод FillBuffer с помощью memcpy.

Но я получаю это по сравнению с этим.

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

ответ