Каков наилучший способ решения проблем пиксельного аспектного отношения (PAR) в DirectShow?

0

Я использую фильтр фильтрации DirectShow для захвата кадров из видео. Текущая реализация следует за этим графиком:

SourceFilter-> SampleGrabber-> NullRenderer

Это работает большую часть времени, чтобы извлекать изображения по кадре для дальнейшей обработки. Однако я столкнулся с проблемами с некоторыми видеороликами, у которых нет PAR 1:1. Эти образы происходят на моих этапах обработки.

Единственный способ исправить это, который я нашел сейчас, - использовать визуализатор VMR9 в режиме без окон, который использует GetCurrentImage() для извлечения растрового изображения с правильным соотношением сторон. Но этот метод не очень полезен для непрерывного захвата тысяч кадров.

Теперь мой вопрос: как лучше всего решить эту проблему? Кто-нибудь сталкивается с этой проблемой?

Теги:
directshow
samplegrabber

1 ответ

1
Лучший ответ

Образец Grabber предоставляет вам кадры с исходными пикселями. Это не совсем проблема, если есть соотношение сторон, и пиксели не являются "квадратными пикселями". Чтобы преобразовать в квадратные пиксели, вам просто нужно растянуть изображение соответственно. Вам будет проще сделать этот шаг шкалы вне конвейера DirectShow, и у вас есть все данные, которые вам нужны: пиксели и оригинальный тип носителя. Вы можете рассчитать соответствующее разрешение с квадратными пикселями и выполнить повторный выбор изображения.

  • 0
    Я предполагаю, что вы автор alax.info/blog ? Эта страница мне очень помогла! На самом деле, я подумал о предложенном вами методе и уже пытался создать способ получения истинного PAR, считывая соотношение сторон кадра видео, его разрешение и формат. Просто подумал, что будет более элегантный способ решить эту проблему. Спасибо!
  • 0
    Более элегантный способ - встроить масштабирование в форм-фактор фильтра и использовать фильтр, который масштабируется до квадратных пикселей. В какой-то степени это делает стоковая Video Resizer DMO, но я полагаю, что при ее непосредственном использовании могут возникнуть определенные проблемы. Поскольку вы используете Sample Grabber + Null Renderer, предполагается, что вы хотите как можно скорее выйти из конвейера DirectShow, и в этом случае более подходящим является масштабирование вне.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню