Поскольку во встроенном приложении мне нужны изображения в оттенках серого, чтобы сэкономить время, я пытаюсь получить кадр с веб-камеры непосредственно в оттенках серого, не получая его при преобразовании формата RGB.
Примеры, которые я нашел, получают кадр в RGB и затем преобразуют его
cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY)
Благодарю.
В Linux просто используйте v4l2-ctl
Команда уменьшить всю насыщенность и заставить камеру выплевывать вывод в градациях серого:
v4l2-ctl -c saturation=0
Конечно, это будет работать, только если ваша веб-камера поддерживает saturation
вариант. Чтобы проверить, работает ли он, взгляните на все доступные элементы управления:
v4l2-ctl -l
Короче НЕТ!
Большая часть выходных данных камеры представлена в форматах YUV. Функция videoCapture преобразует это в RGB.
cvSetCaptureProperty
Функция может быть использована для установки значения CV_CAP_PROP_CONVERT_RGB
пометить как ЛОЖЬ.
Таким образом, выход будет в YUV. Преобразование этого изображения в серое изображение.
Таким образом, мы могли бы избежать преобразования YUV-в-RGB. И преобразование YUV-в серый в вычислительном отношении менее интенсивно, так как Y-канал действительно серый данные.
Я не уверен, придется попробовать.