//灰度处理
cvtColor(image,image_gray,CV_BGR2GRAY);
//高斯平滑
GaussianBlur(image_gray, image_gray, Size(3, 3), 0, 0);
imshow("灰度图",image_gray);
//canny算法,
//高低阈值比,一般2~3、孔径默认3
Mat image_canny,image_canny_1;
Canny(image_gray,image_canny,65,130,3);
imshow("Canny算法",image_canny);
//灰度之后与原图融合结果
image.copyTo(image_canny_1,image_canny);
imshow("Canny灰度与原图融合结果",image_canny_1);
//sobel算法
//输出图像深度、x,y梯度,sobel核算子,缩放因子
Mat image_sobel_x,image_sobel_y,image_sobel_xy,image_sobel;
//sobel_x方向梯度
Sobel(image_gray,image_sobel_x,-1,1,0,3,1,0,BORDER_DEFAULT);
imshow("Sobel_x方向",image_sobel_x);
//sobel_y方向梯度
Sobel(image_gray,image_sobel_y,-1,0,1,3,1,0,BORDER_DEFAULT);
imshow("Sobel_y方向",image_sobel_y);
//sobel_xy方向梯度
Sobel(image_gray,image_sobel_xy,-1,1,1,3,1,0,BORDER_DEFAULT);
imshow("Sobel_xy方向",image_sobel_xy);
//sobel_xy方向融合
addWeighted(image_sobel_x, 0.5, image_sobel_y, 0.5, 0,image_sobel);
imshow("Sobel算法",image_sobel);
//laplace算法
//深度、孔径(奇)、比例因子
Mat image_laplace;
Laplacian(image_gray,image_laplace,-1,5,1,0,BORDER_DEFAULT);
imshow("Laplce算法",image_laplace);
/*
--------------------------
边缘检测相关函数
二阶canny、laplace、
一阶sobel
--------------------------
*/
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
int main(int argc, char* argv[]){
Mat image_gray;
Mat image=imread("仓老师.jpg");
//灰度处理
cvtColor(image,image_gray,CV_BGR2GRAY);
//高斯平滑
GaussianBlur(image_gray, image_gray, Size(3, 3), 0, 0);
imshow("灰度图",image_gray);
//canny算法,
//高低阈值比,一般2~3、孔径默认3
Mat image_canny,image_canny_1;
Canny(image_gray,image_canny,65,130,3);
imshow("Canny算法",image_canny);
//灰度之后与原图融合结果
image.copyTo(image_canny_1,image_canny);
imshow("Canny灰度与原图融合结果",image_canny_1);
//sobel算法
//输出图像深度、x,y梯度,sobel核算子,缩放因子
Mat image_sobel_x,image_sobel_y,image_sobel_xy,image_sobel;
//sobel_x方向梯度
Sobel(image_gray,image_sobel_x,-1,1,0,3,1,0,BORDER_DEFAULT);
imshow("Sobel_x方向",image_sobel_x);
//sobel_y方向梯度
Sobel(image_gray,image_sobel_y,-1,0,1,3,1,0,BORDER_DEFAULT);
imshow("Sobel_y方向",image_sobel_y);
//sobel_xy方向梯度
Sobel(image_gray,image_sobel_xy,-1,1,1,3,1,0,BORDER_DEFAULT);
imshow("Sobel_xy方向",image_sobel_xy);
//sobel_xy方向融合
addWeighted(image_sobel_x, 0.5, image_sobel_y, 0.5, 0,image_sobel);
imshow("Sobel算法",image_sobel);
//laplace算法
//深度、孔径(奇)、比例因子
Mat image_laplace;
Laplacian(image_gray,image_laplace,-1,5,1,0,BORDER_DEFAULT);
imshow("Laplce算法",image_laplace);
imshow("仓老师",image);
waitKey(0);
return 0;
}