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

Альфа канал, PNG

Recommended Posts

Доброго времени суток! Возникла проблема, никак не могу решить. Имеется png изображение с прозрачностью(альфа канал). Загружаю его таким образом: IplImage* img=cvLoadImage("pict.png", CV_LOAD_IMAGE_UNCHANGED); Но при выводе в окно, отсекается альфа канал(изображение становится 3 канальным, с ужасным черным контуром). Погуглив нашел интересную вещь: альфа канал не поддерживается в opencv 2.0. Но у меня opencv 2.3.1 и к тому же на офф. сайте написано: "CV_LOAD_IMAGE_UNCHANGED (<0) loads the image as is (including the alpha channel if present)". Значит выходит что все поддерживается? Но почему тогда выводится "такое" изображение? Очень надеюсь на помощь)

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


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

А загруженное изображение имеет сколько каналов?

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


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

Получается что 3 канальное.. Для большего понимания выкладываю фото("blender"- исходное, "blender-2" - выводимое):

post-4914-0-94579400-1332586213_thumb.pn

post-4914-0-73942000-1332586552_thumb.pn

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


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

Тут гадать незачем, надо просто свойства изображения посмотреть посмотреть (свойство nChannels).

Если трехканальное, то надо какой то либой грузить Png, например DevIL, и препарировать послойно.

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


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

Проверил как вы посоветовали. Изображение 4-х канальное! Но почему тогда такое отличие от оригинала? :unsure:

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


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

Теперь можно функцией cvSplit расщепить изображение по каналам и вывести каждый канал по-отдельности, посмотреть что в каждом из них. Если четвертый канал заполнен правильно, то его надо использовать как маску. То есть нормировать, чтобы он имел значения от 0 до 1 и использовать при наложении изображений.

img=img1*mask+img2*(1-mask);

Только производить эти действия лучше с действительным типом элементов, иначе все округлится до 0.

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


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

Помоему они все попорчены:

p.s. просто в opencv новичок, поэтому еще не во всем разобрался :unsure:

post-4914-0-41089300-1332608657_thumb.pn

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


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

Нет, они все нормальные. Четвертый и есть альфа-канал. Там где должна быть картинка - белый, там где должен быть фон - черный, а где смесь - серый.

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×