Итак, мы научились загружать изображения, видео и даже получать картинку с камеры. Настала пора сделать с полученным изображением что-нибудь этакое. Начнём с простого примера сглаживания изображения.
Немного модифицируем пример загрузки изображения. Добавим дополнительное окошко для вывода результата операции сглаживания, которое осуществляется функцией cvSmooth().
В данном примере выполняется сглаживание по гауссиане (CV_GAUSSIAN) в области 3х3 вокруг каждого пикселя изображения.
Эту функцию можно использовать для устранения шумов на изображении.
CVAPI(void) cvSmooth( const CvArr* src, CvArr* dst,
int smoothtype CV_DEFAULT(CV_GAUSSIAN),
int size1 CV_DEFAULT(3),
int size2 CV_DEFAULT(0),
double sigma1 CV_DEFAULT(0),
double sigma2 CV_DEFAULT(0));
— сглаживает картинку (например, для устранения шума)
src — исходная картинка для обработки
dst — картинка для сохранения результата операции
smoothtype — тип сглаживания:
CV_BLUR_NO_SCALE — суммирование без масштабирования size1 x size2
CV_BLUR — суммирование с масштабированием 1/size1 x size2
CV_GAUSSIAN — свёртка изображения с гауссовым ядром size1 x size2
CV_MEDIAN — поиск среднего значения в окрестности size1 x size2
CV_BILATERAL — двусторонняя фильтрация окрестности size1 x size2 с цветовой сигмой = sigma1 и пространственной сигмой = sigma2 (для квадратной окрестности, т.е. size1 = size2)
сглаживающая фильтрация, при которой значение интенсивности пикселя определяется средневзвешенным значением интенсивности соседних пикселей, причём веса зависят не только от евклидового расстояния, но и от расстояния в цветовом пространстве.
далее, функции передаются параметры сглаживания:
size1 — размер области сглаживания (чем больше, тем сильнее сглаживание)
size2 — (при Гауссиане можно не задавать (0), тогда он будет равен size1)
sigma1 — при Гауссиане задаёт параметр отклонения g. Если 0 — рассчитывается из размера ядра по формуле:
g = 0.3*(n/2 - 1) + 0.8 ,где n - размер ядра size1
если параметр sigma1 отличен от 0, а size1=size2=0, то размер ядра расчитывается из sigma1
sigma2
Попробовал добавить TrackBar и изменять параметры сглаживания. Пришлось ещё добавить проверку на 0 иначе будет вылетать приложение. В результате получилось только с CV_BLUR_NO_SCALE и CV_BLUR. При CV_BILATERAL просто чёрный экран. При вызове остальных методов приложение закрывалось.
Можете ли подсказать почему такое происходит и что надо сделать чтоб заработало?
Здравствуйте, запустила ваш код и получила такую ошибку, при вызове cvsmooth не находит tbb_debug.dll, хотя читаю ваши уроки с самого начала, поэтому скачивала последний tbb и закидывала его в папку bin. Причем, что примечательно, при остальной работе с выводом изображения на экран всё в порядке. Может проблема с совместимостью версий tbb и openCV?
Комментарии (4)
RSS свернуть / развернутьМожете ли подсказать почему такое происходит и что надо сделать чтоб заработало?
Mur
bashka
Windows 7 x64, openCV 2.3.1, tbb 4.1
Спасибо
IKI
IKI
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.