首页 > 其他 > 详细

OpenCV Canny 边缘检测

时间:2020-01-09 13:32:39      阅读:58      评论:0      收藏:0      [点我收藏+]

 

 1 #include "opencv2/imgproc/imgproc.hpp"
 2 #include "opencv2/highgui/highgui.hpp"
 3 #include <stdlib.h>
 4 #include <stdio.h>
 5 
 6 using namespace cv;
 7 
 8 /// 全局变量
 9 
10 Mat src, src_gray;
11 Mat dst, detected_edges;
12 
13 int edgeThresh = 1;
14 int lowThreshold;
15 int const max_lowThreshold = 100;
16 int ratio = 3;
17 int kernel_size = 3;
18 char* window_name = "Edge Map";
19 
20 /**
21  * @函数 CannyThreshold
22  * @简介: trackbar 交互回调 - Canny阈值输入比例1:3
23  */
24 void CannyThreshold(int, void*)
25 {
26   /// 使用 3x3内核降噪
27   blur( src_gray, detected_edges, Size(3,3) );
28 
29   /// 运行Canny算子
30   Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size );
31 
32   /// 使用 Canny算子输出边缘作为掩码显示原图像
33   dst = Scalar::all(0);
34 
35   src.copyTo( dst, detected_edges);
36   imshow( window_name, dst );
37  }
38 
39 
40 /** @函数 main */
41 int main( int argc, char** argv )
42 {
43   /// 装载图像
44   src = imread( argv[1] );
45 
46   if( !src.data )
47   { return -1; }
48 
49   /// 创建与src同类型和大小的矩阵(dst)
50   dst.create( src.size(), src.type() );
51 
52   /// 原图像转换为灰度图像
53   cvtColor( src, src_gray, CV_BGR2GRAY );
54 
55   /// 创建显示窗口
56   namedWindow( window_name, CV_WINDOW_AUTOSIZE );
57 
58   /// 创建trackbar
59   createTrackbar( "Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold );
60 
61   /// 显示图像
62   CannyThreshold(0, 0);
63 
64   /// 等待用户反应
65   waitKey(0);
66 
67   return 0;
68   }

OpenCV Canny 边缘检测

原文:https://www.cnblogs.com/ybqjymy/p/12170928.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!