opencv学习笔记(十九)——图像滤波综合运用实例
2015-11-16 20:00
399 查看
#include<opencv2/opencv.hpp> cv::Mat Source_Image,BoxFilter_Image, MeanBlur_Image, GaussianBlur_Image, MedianBlur_Image, BilateralFilter_Image; int g_BoxFilter; //方框滤波参数 int g_MeanBlur; //均值滤波参数 int g_GaussianBlur; //高斯滤波参数 int g_MedianBlur; //中值滤波参数 int g_BilateralFilter; //双边滤波参数 static void on_Boxfilter(int, void *); static void on_MeanBlur(int, void *); static void on_GaussianBlur(int, void *); static void on_MedianBlur(int, void *); static void on_BilateralFilter(int, void *); void main() { Source_Image = cv::imread("medianBlur.jpg"); if (!Source_Image.data) printf("Source loading error!"); cv::namedWindow("Srouce_Image"); cv::imshow("Srouce_Image", Source_Image); //Boxfilter g_BoxFilter = 6; BoxFilter_Image = Source_Image.clone(); cv::namedWindow("BoxFilter_Image"); cv::createTrackbar("内核值:", "BoxFilter_Image", &g_BoxFilter, 40, on_Boxfilter); on_Boxfilter(g_BoxFilter, 0); cv::imshow("BoxFilter_Image", BoxFilter_Image); //MeanBlur g_MeanBlur = 10; MeanBlur_Image = Source_Image.clone(); cv::namedWindow("MeanBlur_Image"); cv::createTrackbar("内核值:", "MeanBlur_Image", &g_MeanBlur, 40, on_MeanBlur); on_MeanBlur(g_MeanBlur, 0); cv::imshow("MeanBlur_Image", MeanBlur_Image); //GaussianBlur g_GaussianBlur = 1; GaussianBlur_Image = Source_Image.clone(); cv::namedWindow("GaussianBlur_Image"); cv::createTrackbar("内核值:", "GaussianBlur_Image", &g_GaussianBlur, 40, on_GaussianBlur); on_GaussianBlur(g_GaussianBlur, 0); cv::imshow("GaussianBlur_Image", GaussianBlur_Image); //MedianBlur g_MedianBlur = 1; MedianBlur_Image = Source_Image.clone(); cv::namedWindow("MedianBlur_Image"); cv::createTrackbar("内核值:", "MedianBlur_Image", &g_MedianBlur, 40, on_MedianBlur); on_MedianBlur(g_MedianBlur, 0); cv::imshow("MedianBlur_Image", MedianBlur_Image); //BilateralFilter g_BilateralFilter = 1; BilateralFilter_Image = Source_Image.clone(); cv::namedWindow("BilateralFilter_Image"); cv::createTrackbar("内核值:", "BilateralFilter_Image", &g_BilateralFilter, 40, on_BilateralFilter); on_BilateralFilter(g_BilateralFilter, 0); cv::imshow("BilateralFilter_Image", BilateralFilter_Image); while (char(cv::waitKey(1) != 'q')) {}; } //方框滤波回调函数 static void on_Boxfilter(int, void *) { cv::boxFilter(Source_Image, BoxFilter_Image, -1, cv::Size(g_BoxFilter + 1, g_BoxFilter + 1)); cv::imshow("BoxFilter_Image", BoxFilter_Image); } //均值滤波回调函数 static void on_MeanBlur(int, void *) { cv::blur(Source_Image, MeanBlur_Image, cv::Size(g_MeanBlur + 1, g_MeanBlur + 1)); cv::imshow("MeanBlur_Image", MeanBlur_Image); } //高斯滤波回调函数 static void on_GaussianBlur(int, void*) { cv::GaussianBlur(Source_Image, GaussianBlur_Image, cv::Size(g_GaussianBlur*2 + 1, g_GaussianBlur*2 + 1), 0); cv::imshow("GaussianBlur_Image", GaussianBlur_Image); } //中值滤波回调函数 static void on_MedianBlur(int, void *) { cv::medianBlur(Source_Image, MedianBlur_Image,g_MedianBlur*2+1); cv::imshow("MedianBlur_Image", MedianBlur_Image); } //双边滤波回调函数 static void on_BilateralFilter(int, void *) { cv::bilateralFilter(Source_Image, BilateralFilter_Image, g_BilateralFilter, g_BilateralFilter * 2, g_BilateralFilter / 2); cv::imshow("BilateralFilter_Image", BilateralFilter_Image); }
相关文章推荐
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- OpenCV 2.4.3 C++ 平滑处理分析
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- opencv-python学习一--人脸检测
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- OpenCV配置,从来没有这么简单!
- ubuntu下opencv和qt的安装配置
- OpenCV学习笔记(二十五)——OpenCV图形界面设计Qt+VS2008
- 分享一些OpenCV实现立体视觉的经验
- 关于OpenCv图像变换与基本图形检测
- "应用程序正常初始化失败"-0xc0150002 解决办法
- OpenCV->HSV色彩空间
- opencv 内存泄露
- OpenCV函数cvFindContours
- OpenCV 2.3.1图像文件的读入和显示
- opencv2 矩阵方式 resize图像缩放代码