opencv — извлечение Y, Cb, Cr из Mat в c ++ и создание Mat только со значениями Y

У меня есть два видео, которые я хочу соединить. Я планирую снимать видео в видимом свете, захватывать кадры и конвертировать кадры в YUV. Прежде чем смешать это с ИК-видео, я хочу извлечь компонент Y, поместить его в другое изображение (переменную) типа Mat такого же размера и объединить его с яркостью ИК-кадра. После слияния я хочу вернуть Cb и Cr, чтобы получить цвета.

Я видел эту ссылку: Получение значений Y и Cb, Cr кадра в openCV c ++

Но я не мог понять, как я могу создать свои собственные матрицы с этим методом извлечения Y, Cb и Cr.

Есть идеи, как я могу это сделать?

1

Решение

посмотрите на split () и сливаться

Mat vis_img; // from cam

Mat ycrcb;
cvtColor( vis_img, ycrcb, CV_BGR2YCRCB ); // am i right assuming rgb input even ?

Mat channels[3];
split( ycrcb, channels );

// y is channels[0], cb is channels[1], cr, well...

// some operations on channels later..
// once you 'fused' your luminance channels into one, you can re-assemble the image
// from the channels:

Mat new_channels[3] = { lum_fused, channels[1], channels[2] };

Mat new_ycrcb;
merge( new_channels, new_ycrcb, 3 );
3

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


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