#include <opencv2/opencv.hpp> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace cv; int main() { Mat grad_x, grad_y; Mat abs_grad_x, abs_grad_y, dst, src_gray, abs_dst; Mat src = imread("6013202130.jpg"); //工程目录下应该有一张名为1.jpg的素材图 imshow("【原始图】sobel边缘检测", src); Sobel(src, grad_x, CV_16S, 1, 0, 3, 1, 1, BORDER_DEFAULT); convertScaleAbs(grad_x, abs_grad_x); Sobel(src, grad_y, CV_16S, 0, 1, 3, 1, 1, BORDER_DEFAULT); convertScaleAbs(grad_y, abs_grad_y); addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst); imshow("【效果图】整体方向Sobel", dst); GaussianBlur(src, src, Size(3, 3), 0, 0, BORDER_DEFAULT); cvtColor(src, src_gray, CV_RGB2GRAY); Laplacian(src_gray, dst, CV_16S, 3, 1, 0, BORDER_DEFAULT); convertScaleAbs(dst, abs_dst); imshow("【效果图】图像Laplace变换", abs_dst); waitKey(0); return 0; }