sobel算子的基本概念
sobel算子的计算过程
sobel函数
例程
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/video.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
//0.创建 grad_x 和 grad_y矩阵
Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y, dst;
//1.载入原始图
Mat src = imread("700levi.jpg");
//2.显示原始图
imshow("原始图", src);
//3.求x方向梯度
Sobel(src, grad_x, CV_16S, 1, 0, 3, 1, 1, BORDER_DEFAULT);
convertScaleAbs(grad_x, abs_grad_x);
imshow("效果图X方向Sobel", abs_grad_x);
//4.求y方向梯度
Sobel(src, grad_y, CV_16S, 0, 1, 3, 1, 1, BORDER_DEFAULT);
convertScaleAbs(grad_y, abs_grad_y);
imshow("效果图Y方向Sobel", abs_grad_y);
//5.合并梯度(近似)
addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst);
imshow("效果图整体方向Sobel", dst);
waitKey(0);
return 0;
}
效果