OpenCV захватывает YUYV с камеры без преобразования RGB

Я пытаюсь использовать openCV / c ++ для захвата левого и правого изображения со стереокамеры LI-USB30_V024 без автоматического преобразования его в RGB. Камера выводит изображения в формате YUYV.

Я пытался использовать videoCapture.set (CV_CAP_PROP_CONVERT_RGB, false), но получаю сообщение «HIGHGUI ERROR: V4L: Свойство (16) не поддерживается устройством».

Причина, по которой я хочу избежать преобразования в RGB, заключается в том, что камера упаковывает левое и правое видео в одно изображение YUYV. Обе камеры являются монохромными, и, насколько я могу судить, информация о левом изображении кодируется в каналах Y, а правое изображение — в каналах U и V. Например, если я запускаю guvcview, я получаю одно изображение, которое содержит как левое, так и правое изображения в суперпозиции. Это выглядит как черно-белое изображение (левое изображение закодировано в Y-каналах) с зеленым и розовым изображением, лежащим сверху (правая камера закодирована в УФ-каналах). Я знаю, это звучит довольно необычно, поэтому, если у вас есть какие-либо другие идеи / вопросы по этому поводу, не стесняйтесь.

Моя цель — захватить изображение как YUYV, чтобы я мог использовать split (), чтобы отделить левое изображение (Y-каналы) от правого (U и V-каналы) и отобразить их оба в виде монохромных изображений. Однако, как только изображение было преобразовано в RGB, каналы яркости и доминирования смешиваются вместе, и становится невозможным разделить два изображения.

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

ИЛИ ЖЕ Мне нужен способ захвата левого и правого изображений отдельно, но я думаю, что это маловероятно.

Я думаю, что это было бы возможно в v4l, но я бы предпочел использовать только openCV, если это возможно.

Спасибо!

3

Решение

Я не думаю, что есть способ сделать это в openCV. В конце концов, не было особых проблем захватить кадры с помощью V4L2 и сохранить их в openCV Mats.

3

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

Раньше я работал над камерой, которая выдает данные YUV420, и получил некоторые проблемы при настройке. Но эта функция работает для меня.

videoCapture.set (CV_CAP_PROP_CONVERT_RGB, 0)

Можете ли вы проверить, есть ли другие конфигурации, которые вызывают проблему.

0

В заголовочном файле videoio.hpp:

// Generic camera output modes.
// Currently, these are supported through the libv4l interface only.
enum { CAP_MODE_BGR  = 0, // BGR24 (default)
CAP_MODE_RGB  = 1, // RGB24
CAP_MODE_GRAY = 2, // Y8
CAP_MODE_YUYV = 3  // YUYV
};

Использование:

cv::VideoCapture camera = cv::VideoCapture();
camera.open(0);
camera.set(CV_CAP_PROP_MODE, CV_CAP_MODE_YUYV);
-2
По вопросам рекламы [email protected]