Конвертировать Bayer RGGB в CV iplimage (RGB)

В настоящее время я пытаюсь преобразовать данные Bayer RGGB в изображение.
Я думал, что cvtColor может работать, но он требует «мат» вместо iplimage.

cvtColor(img->imageData, tmpimageData, CV_BayerBG2BGR, 0);

Есть ли обходной путь, может быть, вы можете конвертировать Bayer RGGB в мат, а затем конвертировать мат в iplimage? Я действительно застрял с этой проблемой, любая помощь с благодарностью!

2

Решение

OpenCV может легко конвертировать между Mat и Iplimage.
Например, если img является IplImage*:

Mat m(img);
Mat result;
cvtColor(m, result, CV_BayerBG2BGR, 0);
IplImage ipl_result  = IplImage(result);

Увидеть Mat :: Mat (const IplImage * img, bool copyData = false) а также Mat :: operator IplImage ()

1

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

К сожалению, я не понял, почему cvtColor не работал, но тем не менее я нашел причину конвертировать BayerRGGB в RGB с моим SDK.

Выяснилось, что sdk matrix-vision, с которой я работал, предоставляет встроенное решение.
Первое, что мне нужно было сделать, это изменить PixelFormat в BayerRG8, чтобы получить разрешение изображения 8 бит. После этого мне удалось декодировать Bayer RGGB в RGB, написав idpfRGB888, упакованный в ImageDestination.pixelFormat,

Кроме того, я смог сделать свое преобразование очень примитивным способом, который также выполнил работу, но потребовал слишком много процессорного времени.
Я зациклился imageData массив и вынул каждый четвертый пиксель.

for (int count_small = 0, count_large = 0; count_large < 1000; count_small += 3, count_large +=4)
{
dest[count_small] = source[count_large];
dest[count_small+1] = source[count_large+1];
dest[count_small+2] = source[count_large+2];
}

Не чистый, но он сделал свою работу.

0

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