Перейти к содержимому
Compvision.ru
ProgRoman

Split

Recommended Posts

Добрый день у меня возникла следующая трудность загружаю цветную картинку далее необходимо работать с цветовыми компонентами отдельно для этого использую split вот код


Mat img= imread("C:/images/1_1.jpg");

Mat chan[3];


Mat zr(img.rows,img.cols,CV_8UC1);

zr.zeros(zr.rows,zr.cols,CV_8UC1);


split(img,chan);


Mat timg(img.rows, img.cols,CV_8UC3);

Mat mchan[3];


mchan[0]=chan[0];mchan[1]=em;mchan[2]=em;

merge(mchan,3,timg);


imshow("2:",timg);

этот код выполняется но если начать выводить каждую компоненту на просмотр т.е. R G и B то он не выводит изображение в оттенках B G и R если выводить только chan то выведется серое изображение вот отсюда я подумал, что возможно что то не так разбивается на каналы может я что-то не то делаю код ниже вообще не работает

Mat img= imread("C:/images/1_1.jpg");

vector<Mat> chan;


Mat zr(img.rows,img.cols,CV_8UC1);

zr.zeros(zr.rows,zr.cols,CV_8UC1);


split(img,chan);

тут выбрасывается исключение vector iterator + offset out of range вот.. подскажите пожалуйста что не так я делаю с разбиением изображения на каналы

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так и должно быть, каждый отдельный канал цвета - это всего лишь массив яркостей. Если система не знает какой компонентой R G или B управляет этот слой, она выводит его как серый цвет разной интенсивности. Однослойное изображение интерпретируется как изображение в серых тонах. Вам, для вывода компоненты его цветом, проще всего просто обнулить другие компоненты и собрать изображение заново. Ведь Вы хотите видеть цветное изображение, то есть многоканальное, в данном случае каналов три.

Во втором случае, видимо нужно зарезервировать память под вектор, хотя не проверял, могу ошибаться. Мне, честно говоря,не понятно зачем там вектор, ведь каналов всегда постоянное количество, а вектор это дополнительные накладные расходы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×