文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>OpenCV学习之三:使用形态学操作获取图像边缘

OpenCV学习之三:使用形态学操作获取图像边缘

时间:2011-01-04  来源:pixels

得到了图像的边缘,下图为示例结果:

 

源代码如下:

 

代码  1 #include "stdafx.h"
 2 
 3 #include "cv.h"
 4 #include "cxcore.h"
 5 #include "highgui.h"
 6 
 7 #pragma comment(lib, "cv.lib")
 8 #pragma comment(lib, "cxcore.lib")
 9 #pragma comment(lib, "highgui.lib")
10 
11 int _tmain(int argc, _TCHAR* argv[])
12 {
13     IplImage *srcImg = cvLoadImage("D:\\luosi.jpg", 1);
14     IplImage *grayImg = cvCreateImage(cvGetSize(srcImg), 8, 1);
15     cvCvtColor(srcImg, grayImg, CV_BGR2GRAY);
16     
17     IplImage *dstImg = cvCreateImage(cvGetSize(srcImg), 8, 1);
18     cvThreshold(grayImg, dstImg, cvMean(srcImg)*0.7, 255, CV_THRESH_BINARY);
19     
20     IplConvKernel *kernel = cvCreateStructuringElementEx(3, 3, 1, 1, CV_SHAPE_CROSS);
21 
22     cvMorphologyEx(dstImg, dstImg, NULL, kernel, CV_MOP_OPEN, 3);
23     cvMorphologyEx(dstImg, dstImg, NULL, kernel, CV_MOP_CLOSE, 1);
24 
25     // Find edges: dilate(image) - image;
26     IplImage *dilatedImg = cvCreateImage(cvGetSize(srcImg), 8, 1);
27     cvDilate(dstImg, dilatedImg, kernel, 1);
28     cvSub(dilatedImg, dstImg, dstImg);
29 
30     // Label edges in srcImg 
31     IplImage *redCh = cvCreateImage(cvGetSize(srcImg), 8, 1);
32     IplImage *greenCh = cvCreateImage(cvGetSize(srcImg), 8, 1);
33     IplImage *blueCh = cvCreateImage(cvGetSize(srcImg), 8, 1);
34 
35     cvSplit(srcImg, blueCh, greenCh, redCh, NULL);
36     cvOr(redCh, dstImg, redCh);
37     cvMerge(blueCh, greenCh, redCh, NULL, srcImg);
38 
39     cvNamedWindow("src");
40     cvShowImage("src", srcImg);
41     cvNamedWindow("dst");
42     cvShowImage("dst", dstImg);
43 
44     cvWaitKey(0);
45 
46     return 0;
47 }
48 
49 

 

 

相关阅读 更多 +
排行榜 更多 +
火柴人战争血腥打击

火柴人战争血腥打击

飞行射击 下载
三角符文第一章下载

三角符文第一章下载

角色扮演 下载
闪客快打3无敌版下载

闪客快打3无敌版下载

飞行射击 下载