Я использую фильтр фильтрации DirectShow для захвата кадров из видео. Текущая реализация следует за этим графиком:
SourceFilter-> SampleGrabber-> NullRenderer
Это работает большую часть времени, чтобы извлекать изображения по кадре для дальнейшей обработки. Однако я столкнулся с проблемами с некоторыми видеороликами, у которых нет PAR 1:1. Эти образы происходят на моих этапах обработки.
Единственный способ исправить это, который я нашел сейчас, - использовать визуализатор VMR9 в режиме без окон, который использует GetCurrentImage() для извлечения растрового изображения с правильным соотношением сторон. Но этот метод не очень полезен для непрерывного захвата тысяч кадров.
Теперь мой вопрос: как лучше всего решить эту проблему? Кто-нибудь сталкивается с этой проблемой?
Образец Grabber предоставляет вам кадры с исходными пикселями. Это не совсем проблема, если есть соотношение сторон, и пиксели не являются "квадратными пикселями". Чтобы преобразовать в квадратные пиксели, вам просто нужно растянуть изображение соответственно. Вам будет проще сделать этот шаг шкалы вне конвейера DirectShow, и у вас есть все данные, которые вам нужны: пиксели и оригинальный тип носителя. Вы можете рассчитать соответствующее разрешение с квадратными пикселями и выполнить повторный выбор изображения.