opencv 边缘算子

两个边缘算子,闹半天……哦好吧其实是一天。

又回去学习了实参。形参。引用。构造。

 1 #include<iostream>   
 2 #include <opencv2/opencv.hpp> 
 3 using namespace std;  
 4 using namespace cv;  
 5  
 6 void Xfilter(Mat kernel, Mat src, Mat dst);    
 7 void Yfilter(Mat kernel, Mat src, Mat dst);
 8 int main()  
 9 {  
10     Mat src,dst1,dst2;  
11 
12     Mat kernel1(3,3,CV_32F,cv::Scalar(0));
13      kernel1.at<float>(0,0) = -1.0;
14      kernel1.at<float>(0,1) = -2.0;
15      kernel1.at<float>(0,2) = -1.0;
16      kernel1.at<float>(2,0) = 1.0;
17      kernel1.at<float>(2,1) = 2.0;
18      kernel1.at<float>(2,2) = 1.0;
19     
20      Mat kernel2(3,3,CV_32F,cv::Scalar(0));
21      kernel2.at<float>(0,0) = -1.0;
22      kernel2.at<float>(1,0) = -2.0;
23      kernel2.at<float>(2,0) = -1.0;
24      kernel2.at<float>(0,2) = 1.0;
25      kernel2.at<float>(1,2) = 2.0;
26      kernel2.at<float>(2,2) = 1.0;    
27 
28  
29     src = imread("D:\\codeDemo\\abc\\pray2.jpg");  
30  
31     if(!src.data )  
32     {  
33          cout<<""<<endl;  
34          return -1;  
35     }  
36      namedWindow("src");
37     imshow("src",src);  
38 
39      dst1.create(src.size(),src.type());
40       Xfilter(kernel1, src, dst1);
41     namedWindow("dst1");
42     imshow("dst1",dst1);  
43 
44      dst2.create(src.size(),src.type());
45       Yfilter(kernel2, src, dst2);
46     namedWindow("dst2");
47     imshow("dst2",dst2);  
48 
49     waitKey();
50     return 0; 
51 } 
52     void Xfilter(Mat kernel, Mat src, Mat dst)
53     {    
54      filter2D(src,dst,src.depth(),kernel);
55     }    
56     void Yfilter(Mat kernel, Mat src, Mat dst)
57     {     
58      filter2D(src,dst,src.depth(),kernel);
59     }
原文地址:https://www.cnblogs.com/594jing/p/2960390.html