Получите изображение в градациях серого прямо с веб-камеры, используя Opencv

Поскольку во встроенном приложении мне нужны изображения в оттенках серого, чтобы сэкономить время, я пытаюсь получить кадр с веб-камеры непосредственно в оттенках серого, не получая его при преобразовании формата RGB.

Примеры, которые я нашел, получают кадр в RGB и затем преобразуют его

cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY)

Благодарю.

1

Решение

В Linux просто используйте v4l2-ctl Команда уменьшить всю насыщенность и заставить камеру выплевывать вывод в градациях серого:

 v4l2-ctl -c saturation=0

Конечно, это будет работать, только если ваша веб-камера поддерживает saturation вариант. Чтобы проверить, работает ли он, взгляните на все доступные элементы управления:

v4l2-ctl -l
1

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

Короче НЕТ!

Большая часть выходных данных камеры представлена ​​в форматах YUV. Функция videoCapture преобразует это в RGB.
cvSetCaptureProperty Функция может быть использована для установки значения CV_CAP_PROP_CONVERT_RGB пометить как ЛОЖЬ.
Таким образом, выход будет в YUV. Преобразование этого изображения в серое изображение.

Таким образом, мы могли бы избежать преобразования YUV-в-RGB. И преобразование YUV-в серый в вычислительном отношении менее интенсивно, так как Y-канал действительно серый данные.
Я не уверен, придется попробовать.

0

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