Откуда Directshow получает размеры изображения? - PullRequest
1 голос
/ 28 февраля 2012

Мы используем интерфейс directshow для захвата изображений из видеопотока.Эти изображения представлены в окне фиксированного размера.

После того, как мы захватили изображение, мы сохраняем его как растровое изображение.Вниз по течению у нас есть возможность добавлять аннотации к изображению, например буквы шрифтом фиксированного размера.

В одной из наших сред рабочего стола аннотация начала появляться в половине размера, при котором она обычно появляется.Это означает, что изображение, с которым мы объединяем текст, имеет размеры, которые могут быть в два раза больше.

Система, на которой это происходит, является общим ресурсом, так как в некоторых неизвестных лицах в системе установлено программное обеспечение, которое отличается отнаша базовая линия.

У нас есть два подхода - первый - переизобразить систему, чтобы вернуть наше поведение размера текста по умолчанию.Второе - выяснить, как directshow управляет размерами изображения, чтобы мы могли правильно установить масштабирование изображения.

Обзор литературы по DirectShow показывает, что вышеупомянутое не является тривиальной задачей.Первоначальная работа была сделана другой командой, которая не документировала, что они сделали.Кто-нибудь может направить нас в направлении того, с каким объектом DirectShow мы хотим иметь дело, чтобы правильно выбрать размер выбранного изображения?

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Когда фильтры подключаются в DirectShow, они имеют AM_MEDIA_TYPE. Здесь вы найдете VIDEOINFOHEADER с BITMAPINFOHEADER, и этот заголовок имеет biWidth и biHeight. Попробуйте создать FilterGraph вручную (с помощью GraphEdit или GraphStudioNext ) и проверить эти поля.

2 голосов
/ 28 февраля 2012

DirectShow - в качестве основы - не имеет дело с разрешениями напрямую. Ваш видеоисточник (например, оборудование для захвата) способен обеспечить подачу видео в определенном разрешении, которое вы можете изменить. Обычно вы используете IAMStreamConfig, как описано в Настройка формата вывода видео , чтобы выбрать разрешение захвата.

Иногда вы не можете повлиять на разрешение захвата, и вам нужно пересчитать изображение в любых измерениях, которые вы захватили. Для этого нет фондового фильтра, однако Media Foundation предоставляет подходящий Video Resizer DSP, который выполняет большую часть задачи. К сожалению, он не подходит для конвейера DirectShow плавно, поэтому для изменения размера необходим фитинг и / или пользовательский фильтр.

...