Как через OpenCV получить видео с камеры в формате YUYV?
Приветствую!
Есть USB камера, которая точно поддерживает отдачу в формате YUYV.
Пытаюсь захватить видео через OpenCV, при этом в обычном RGB всё без проблем, а вот выставить YUYV не получается.
Пробовал: cap.set(CV_CAP_PROP_MODE, CV_CAP_MODE_YUYV);
говорит, что не поддерживает О_о cap.set(CV_CAP_PROP_CONVERT_RGB, false);
Не выводит вообще ничего, но и ошибок нет.
Подскажите, куда смотреть, что бы получить YUYV и при этом желательно кроссплатформенно?
В чём проблема захватить в RGB и конвертировать в YUV через cvtColor?
Камера действительно может не уметь выдавать видео в этом формате. По-хорошему, нужно определить список поддерживаемых режимов камерой, выбрать наиболее подходящий, выполнить захват, а потом конвертировать как угодно.
Pavel K: возможно, особенности работы OpenCV так не позволят сделать. Без OpenCV картинку читать геморрой ещё тот.. И что, если в YUYV формате с камеры брать картинку, изображение менее замыленное? Как-то странно, отличия в потоке должны быть минимальны (если различие лишь в цветовых форматах).
15432: Раньше была камера отдавала по дефолту в YUYV, спалил купил почти такую же и не думал, что переключать формат будет такой гемор.
Если брать YUYV, то да, мыла нет, зато есть артефакты, но мне важна чёткость, с артефактами справляюсь пост обработкой.
Мне вот и интересно куда копать "особенности OpenCV" т.к. VLC, который работает через v4l2 прекрасно отображает YUYV, значит и OpenCV должно.
Какое разрешение видео? Похоже, в режиме YUY2 видео идёт вообще без сжатия (потому и качество лучше). Например, для 800*600 пропускной способности USB 2.0 уж не хватит.
Pavel K: Несколько странная ошибка. Говорит, что установка параметра №2 не поддерживается. Не устройством (not supported by device), а вообще. Плюс CV_CAP_PROP_MODE идёт под номером 9. Как будто параметры местами перепутаны и либа пытается установить CV_CAP_PROP_POS_AVI_RATIO (№2)
Таксс, гугл поведал, что есть ещё вариант открыть VideoCapture через Gstreamer, и там наконец-то можно передать нормально все нужные параметры в строке. Правда, это не кроссплатформенно...