Можно ли установить глубину цвета во время захвата изображения с веб-камеры с помощью OpenCV?

Я захвата изображения с помощью OpenCV в C ++

firstFrame = cvQueryFrame(capture);

легко установить свойства ширины и высоты

cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH, WIDTH );
cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT, HEIGHT );

Интересно, есть ли способ указать глубину цвета также без дальнейшей обработки рамки?

1

Решение

Согласно документация, Вы должны быть в состоянии сделать это с помощью CV_CAP_PROP_FORMAT если вы используете функцию retrive() чтобы получить ваш кадр.

CV_CAP_PROP_FORMAT Формат объектов Mat, возвращаемых функцией retrieve ().

Однако обратите внимание также на то, что:

При запросе свойства, которое не поддерживается серверной частью, используемой
класс VideoCapture, значение 0 возвращается.

2

Другие решения

Создали отдельную ветку на github с изменениями в videoio для поддержки пользовательских потоков & форматы.

Ссылка на репозиторий Git Hub

https://github.com/shawndfernandes/opencv

Добавлена ​​поддержка пользовательского потока & глубина для захвата OpenCV, возвращается к значениям OpenCV по умолчанию, если не установлен.

Установить с помощью VideoWriter :: set method

CV_CAP_PROP_DEPTH

matrix_depth = 8,16 // * для 8U и 16 для глубины 16U

CV_CAP_PROP_STREAM

stream_format = 1,2,3,4,5… 12; // выбираем необработанный поток с камеры через V4L

«BGR24» 1:

«YVU420» 2:

«YUV411P» 3:

«MJPEG» 4:

«JPEG» 5:

«ЮЙВ» 6:

«УЙВЫ» 7:

«SN9C10X» 8:

«SBGGR8» 9:

«SGBRG8» 10:

«RGB24» 11:

«Y16» 12:

0

По вопросам рекламы [email protected]