Я написал программу, которая захватывает изображение с видеокамеры и выводит его на экран компьютера. Все вроде получилось, но изображение выводится на экран компьютера зеркально по вертикали.
Захват камеры и вывод изображения осуществляется средствами DirectShown.
Как я понимаю, необходим еще один фильтр включить в DirectShow граф. Но я слаб в написании DirectShow фильтров, поэтому спрашиваю можно ли воспользоваться готовым фильтром для исправления этого недостатка или где найти подробную информацию с примерами, как писать подобные DirectShow фильтры. (последнее — желательнее)
Проект пишется в среде MVS 2015 C++ WIN API без использования технологии NET
Попробуйте поставить высоту (
biHeight) в отрицательное значение.
biHeight
Specifies the height of the bitmap, in pixels.
For uncompressed RGB bitmaps, if biHeight is positive, the bitmap is a bottom-up DIB with the origin at the lower left corner. If biHeight is negative, the bitmap is a top-down DIB with the origin at the upper left corner.
For YUV bitmaps, the bitmap is always top-down, regardless of the sign of biHeight. Decoders should offer YUV formats with positive biHeight, but for backward compatibility they should accept YUV formats with either positive or negative biHeight.
For compressed formats, biHeight must be positive, regardless of image orientation.
https://learn.microsoft.com/en-gb/windows/win32/api/wingdi/ns-wingdi-bitmapinfoheader?redirectedfrom=MSDN
Если не поможет, то приведите больше инфы: в каких FOURCC получаете фреймы, в какие фильтры их просовываете, и какой ставите на рендеринг? Если не рендерит, то куда (в какой фильтр) и в каком формате отдаете?
PS вот еще статья с пояснением про перевернутые изображение под Виндой
https://learn.microsoft.com/en-gb/windows/win32/directshow/top-down-vs--bottom-up-dibs?redirectedfrom=MSDN.