веб-камера с форматом изображения MJPG

#jpeg

#jpeg

Вопрос:

Я работаю с C # и веб-камерой usb, которая поддерживает форматы изображений YUY2 или MJPG. До сих пор у меня всегда была камера в режиме YUY2, и это работает нормально. Недавно я попытался изменить формат на MJPG, думая, что тогда он будет передавать моей программе по одному изображению в формате JPEG на каждый кадр захвата. Кажется, что это почти удается. Когда я пытаюсь отобразить буфер, мое приложение всегда выдает исключение, которое является неопределенным, но, похоже, указывает на то, что поток недействителен. Затем я скопировал один из буферов в файл и попытался просмотреть его с помощью IrfanView, и он сообщает мне, что таблицы Хаффмана нет. Просматривая буфер с помощью двоичного редактора, я вижу, что в нем есть маркеры SOI и EOF JPEG (и несколько других); однако он не содержит маркера таблицы Хаффмана. Есть идеи, что я здесь делаю не так? Я немного читал о JPEG, и, по-видимому, бывают случаи, когда изображения могут использовать стандартную таблицу Хаффмана для уменьшения размера файла; однако, если это так, как мне вставить это в изображение (при необходимости)? Кстати, это относится к Microsoft Lifecam.

Ответ №1:

Частью стандарта Motion-JPEG для файлов AVI является то, что будет использоваться фиксированная таблица Хаффмана, чтобы ее не нужно было сохранять в каждом кадре.

Комментарии:

1. Извините за поздний ответ; по-видимому, я забыл проверить «уведомлять меня ответами». :-(Тогда должен быть способ вставить эту таблицу хаффмана по умолчанию в изображение JPEG, чтобы я мог правильно просмотреть это изображение?

2. Да, вы можете вставить таблицу Хаффмана в поток данных MJPEG. Все маркеры JPEG являются подвижными и не используют абсолютные смещения в файле.

3. Эти фиксированные значения HT приведены в mmreg.h .