10. 对一幅灰度图像进行均值滤波、中值滤波。(自己可适当对原图像增加高频噪声)
2016-05-03 09:49
423 查看
#include <iostream> #include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgproc.hpp> using namespace std; using namespace cv; Mat g_srcImage; // 全局的源图像 // 分别对应全局的方框滤波、均值滤波、高斯滤波、中值滤波、双边滤波的输出图像以及内核值/参数值 Mat g_dstImgBox, g_dstImgBlur, g_dstImgGaussian, g_dstImgMedian, g_dstImgBilateral; int g_BoxFilterVal = 5; int g_BlurVal = 12; int g_GaussianBlurVal = 5; int g_MedianBlurVal = 12; int g_BilateralFilterVal = 12; static void on_BoxFilter(int, void *); static void on_Blur(int, void *); static void on_GaussianBlur(int, void *); static void on_MedianBlur(int, void *); static void on_BilateralFilter(int, void*); int main() { // 读取图像到g_srcImage g_srcImage = imread("6013202130.jpg"); if (!g_srcImage.data) { printf("读取的图片不存在…… \n"); return false; } // 分别克隆原图到5中滤波所需的图像中,均为Mat类型 g_dstImgBox = g_srcImage.clone(); g_dstImgBlur = g_srcImage.clone(); g_dstImgGaussian = g_srcImage.clone(); g_dstImgMedian = g_srcImage.clone(); g_dstImgBilateral = g_srcImage.clone(); // 显示原图 namedWindow("【原图】", 1); imshow("【原图】", g_srcImage); namedWindow("【均值滤波】", 1); createTrackbar("内核值", "【均值滤波】", &g_BlurVal, 30, on_Blur); on_Blur(g_BlurVal, 0); namedWindow("【高斯滤波】", 1); createTrackbar("内核值", "【高斯滤波】", &g_GaussianBlurVal, 30, on_GaussianBlur); on_GaussianBlur(g_GaussianBlurVal, 0); namedWindow("【中值滤波】", 1); createTrackbar("内核值", "【中值滤波】", &g_MedianBlurVal, 30, on_MedianBlur); on_MedianBlur(g_MedianBlurVal, 0); cout << "按下“q”键时,程序退出……\n"; while (char(waitKey(1)) != 'q') {} return 0; } static void on_Blur(int, void *) { blur(g_srcImage, g_dstImgBlur, Size(g_BlurVal + 1, g_BlurVal + 1), Point(-1, -1)); imshow("【均值滤波】", g_dstImgBlur); } static void on_GaussianBlur(int, void *) { GaussianBlur(g_srcImage, g_dstImgGaussian, Size(g_GaussianBlurVal * 2 + 1, g_GaussianBlurVal * 2 + 1), 0, 0); imshow("【高斯滤波】", g_dstImgGaussian); } static void on_MedianBlur(int, void *) { medianBlur(g_srcImage, g_dstImgMedian, g_MedianBlurVal * 2 + 1); imshow("【中值滤波】", g_dstImgMedian); }
相关文章推荐
- 9. 对一幅对比度差的图像进行灰度均衡化。
- 8. 对一幅灰度图像进行灰度对数变换。观察变换前后高、低灰度位置的变化并解释原因。
- 7. 对一幅灰度图像进行离散余弦变换,用图像的形式显示其变换系数。变换后去掉小于系数最大值60% 、80%、90%的系数,在进行反变换,观察变换前后图像区别。
- 6. 对一幅灰度图像进行离散傅里叶变换,用图像的形式显示其(中心化后的)频谱。改变频谱,在进行 反变换,观察变换前后的区别
- 5. 把一幅彩色图像的H、S、I分量单独显示。
- 关于android增添第三方字体的方法
- 3. 把一幅灰度图像进行旋转。
- 2. 把一幅图像进行平移。
- 1.把一幅灰度图像的垂直分辨率和水平分辨率都变为原来的一半,生成一副新的图像。
- webdriver 执行js
- 2、linux基础知识与技能
- 1092. To Buy or Not to Buy (20)
- 10个你可能不知道的 Android Studio技巧
- 用 _findfirst 和 _findnext 查找文件(转)
- leetcode_2:add two numbers
- perl 操作 timesten 数据库 带用户名和密码验证
- python 2.0 s12 day5
- HBase命令(二) -- 表操作
- 2016年5月02日
- 1、操作系统基础概念