转载请说明出处:liwenjin.blog.chinaunix.net
元旦之日,无聊在宿舍参照着帮助文档和网友的资料,完成了第一个OpenCV程序,看到运行起来的效果,让我回想起来了MATLAB处理数字图像的场景,之前没在这方面认真学习,希望借助OpenCV来重新温习下。附上代码记录下。
- // OpenCV_1.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <opencv2/opencv.hpp>
- #include <stdio.h>
- using namespace cv;
- Mat src,dst;
- int morph_elem=0;
- int morph_size=0;
- int morph_operator=0;
- int const max_operator =4;
- int const max_elem =2;
- int const max_kernel_size =21;
- char *window_name ="Morphology Transformations Demo";//字符串变量,作为程序名称
- void Morphology_Operations(int ,void *);
- int _tmain(int argc, _TCHAR* argv[])
- {
- src = imread(argv[1],CV_LOAD_IMAGE_COLOR/*CV_LOAD_IMAGE_UNCHANGED*/);//读取参数1,即图片资源
- if(!src.data)
- {
- return -1;
- }
- namedWindow(window_name,CV_WINDOW_AUTOSIZE);//创建窗口
- //创建Trackbar来选择Morphology 操作
- createTrackbar("Opeartor:\n 0: Opening -1: Closeing \n 2: Gradient -3: Top Hat \n 4:Black Hat",window_name,&morph_operator,max_operator,Morphology_Operations);
- //创建Trackbar来选择kernel类型
- createTrackbar("Element:\n 0:Rect -1:Cross -2 :Ellipse",window_name,&morph_elem,max_elem,Morphology_Operations);
- //创建Trackbar来选择kernel大小
- createTrackbar("Kernel size:\n 2n +1",window_name,&morph_size,max_kernel_size,Morphology_Operations);
- //默认开始
- Morphology_Operations(0,0);
- waitKey(0);
- return 0;
- }
- void Morphology_Operations(int ,void *)
- {
- int operation =morph_operator+2;
- Mat element =getStructuringElement(morph_elem,Size(2*morph_size+1,2*morph_size+1),Point(morph_size,morph_size));
- morphologyEx(src,dst,operation,element);
- imshow(window_name,dst);
- }
效果:
![](http://blog.chinaunix.net/attachment/201301/1/26450922_13570245142oUZ.gif)
阅读(681) | 评论(0) | 转发(0) |