【练习5.2】使用中心为255的图片对比高斯滤波器的平滑效果
《学习OpenCV》中文版第5章第2题
题目要求 |
程序代码 |
结果图片 |
建立一个100×100的单通道图像,将图像全部像素置零,然后设置中心像素值等于255.
c、对原图用5×5过滤器平滑两次,与用9×9过滤器的结果对比,看是否相似,为什么
1 // OpenCVExerciseTesting.cpp : 定义控制台应用程序的入口点。 2 // 3 //D:\\Work\\Work_Programming\\Source\\Image\\lena.jpg 4 5 6 #include "stdafx.h" 7 #include <cv.h> 8 #include <highgui.h> 9 #include <iostream> 10 using namespace cv; 11 using namespace std; 12 //函数声明-->--->-->--->-->--->-->--->// 13 14 15 16 //<--<--<--<--<--<--<--<--<--函数声明// 17 18 int _tmain(int argc, _TCHAR* argv[]) 19 { 20 IplImage * img = cvCreateImage(cvSize(100, 100), IPL_DEPTH_8U, 1); 21 assert(img); 22 cvZero(img); 23 cvSetReal2D(img, 49, 49, 255); 24 25 cvNamedWindow("ExerciseWindow", 0); 26 cvNamedWindow("高斯模糊5×5", 0); 27 cvNamedWindow("高斯模糊9×9", 0); 28 cvNamedWindow("高斯模糊5×5两次", 0); 29 30 cvShowImage("ExerciseWindow", img); 31 32 33 //---------------------------a:开始--------------------------------// 34 35 IplImage * image_Gauss = cvCloneImage(img); 36 cvZero(image_Gauss); 37 38 cvSmooth(img, image_Gauss, CV_GAUSSIAN, 5, 5); 39 40 cvShowImage("高斯模糊5×5", image_Gauss); 41 42 //---------------------------a:结束--------------------------------// 43 44 45 //---------------------------b:开始--------------------------------// 46 47 IplImage * image_Gauss_9 = cvCloneImage(img); 48 cvZero(image_Gauss_9); 49 50 cvSmooth(img, image_Gauss_9, CV_GAUSSIAN, 9, 9); 51 52 cvShowImage("高斯模糊9×9", image_Gauss_9); 53 54 //---------------------------b:结束--------------------------------// 55 56 //---------------------------c:开始--------------------------------// 57 58 //5×5针对原图两次 59 IplImage * image_Gauss_5_2 = cvCloneImage(img); 60 cvZero(image_Gauss_5_2); 61 62 cvSmooth(img, image_Gauss_5_2, CV_GAUSSIAN, 5, 5); 63 cvSmooth(image_Gauss_5_2, image_Gauss_5_2, CV_GAUSSIAN, 5, 5); 64 65 cvShowImage("高斯模糊5×5两次", image_Gauss_5_2); 66 67 68 //---------------------------c:结束--------------------------------// 69 70 71 cvWaitKey(0); 72 73 cvReleaseImage(&img); 74 cvReleaseImage(&image_Gauss); 75 cvReleaseImage(&image_Gauss_9); 76 cvReleaseImage(&image_Gauss_5_2); 77 78 cvDestroyWindow("ExerciseWindow"); 79 cvDestroyWindow("高斯模糊5×5"); 80 cvDestroyWindow("高斯模糊9×9"); 81 cvDestroyWindow("高斯模糊5×5两次"); 82 83 return 0; 84 }
用5×5过滤器平滑两次,与用9×9过滤器平滑,平滑影响的像素数及每个像素的像素值都接近。
‖==========钟于原创 乐于分享 宁静致远 毋忆典藏==========‖