/20110425/Blurring/main.cpp

https://github.com/itrufeng/learncv · C++ · 64 lines · 49 code · 1 blank · 14 comment · 0 complexity · 69306ca0ec012ad1db85cd930e4ef605 MD5 · raw file

  1. /*
  2. * main.cpp
  3. *
  4. * Created on: 2011-4-25
  5. * Author: egame
  6. */
  7. #include <opencv/cv.h>
  8. #include <opencv/highgui.h>
  9. #include <iostream>
  10. int main(int argc,char **argv) {
  11. // init
  12. IplImage *srcImage;
  13. IplImage *jiandanImage;
  14. IplImage *jiandanwuImage;
  15. IplImage *zhongzhiImage;
  16. IplImage *gaosiImage;
  17. IplImage *shuangbianImage;
  18. cvNamedWindow("srcImage",CV_WINDOW_AUTOSIZE);
  19. cvNamedWindow("jiandan",CV_WINDOW_AUTOSIZE);
  20. cvNamedWindow("jiandanwuImage",CV_WINDOW_AUTOSIZE);
  21. cvNamedWindow("zhongzhiImage",CV_WINDOW_AUTOSIZE);
  22. cvNamedWindow("gaosiImage",CV_WINDOW_AUTOSIZE);
  23. cvNamedWindow("shuangbianImage",CV_WINDOW_AUTOSIZE);
  24. // validate
  25. assert(argv[1]);
  26. srcImage = cvLoadImage(argv[1],CV_LOAD_IMAGE_ANYCOLOR);
  27. cvShowImage("srcImage",srcImage);
  28. // 简单模糊
  29. jiandanImage = cvCreateImage(cvGetSize(srcImage),srcImage->depth,srcImage->nChannels);
  30. cvSmooth(srcImage,jiandanImage,CV_BLUR,10,10);
  31. cvShowImage("jiandan",jiandanImage);
  32. // 简单无缩放的模糊
  33. jiandanwuImage = cvCreateImage(cvGetSize(srcImage),srcImage->depth,srcImage->nChannels);
  34. cvSmooth(srcImage,jiandanwuImage,CV_BLUR_NO_SCALE,3,1);
  35. cvShowImage("jiandanwuImage",jiandanwuImage);
  36. // 中值模糊
  37. zhongzhiImage = cvCreateImage(cvGetSize(srcImage),srcImage->depth,srcImage->nChannels);
  38. cvSmooth(srcImage,zhongzhiImage,CV_MEDIAN,9);
  39. cvShowImage("zhongzhiImage",zhongzhiImage);
  40. // 高斯模糊
  41. gaosiImage = cvCreateImage(cvGetSize(srcImage),srcImage->depth,srcImage->nChannels);
  42. cvSmooth(srcImage,gaosiImage,CV_GAUSSIAN,3,3,50);
  43. cvShowImage("gaosiImage",gaosiImage);
  44. // 双边滤波
  45. shuangbianImage = cvCreateImage(cvGetSize(srcImage),srcImage->depth,srcImage->nChannels);
  46. cvSmooth(srcImage,shuangbianImage,CV_BILATERAL,50,1,200,200);
  47. cvShowImage("shuangbianImage",shuangbianImage);
  48. // relase
  49. cvWaitKey(0);
  50. cvDestroyWindow("shuangbianImage");
  51. cvReleaseImage(&shuangbianImage);
  52. cvDestroyWindow("gaosiImage");
  53. cvReleaseImage(&gaosiImage);
  54. cvDestroyWindow("zhongzhiImage");
  55. cvReleaseImage(&zhongzhiImage);
  56. cvReleaseImage(&jiandanwuImage);
  57. cvDestroyWindow("jiandanwuImage");
  58. cvReleaseImage(&jiandanImage);
  59. cvDestroyWindow("jiandan");
  60. cvDestroyWindow("srcImage");
  61. cvReleaseImage(&srcImage);
  62. return 0;
  63. }