13. 用Roberts、Sobel、Prewitt和Laplace算子对一幅灰度图像进行边缘检测。观察异同。
#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; }
声明:
博主是原悦乎教程网站长,博主写博客花费了大量精力,我的博客欢迎转载共享,但在 同时,希望保留我的署名权,不得用于商业用途。转载时请注明转载地址。未经特别说明,均采用“署名-非商业性使用-禁止演绎 2.5 中国大陆”授权。任何违反本协议的行为均属于非法行为。