原理:使用sobel算子计算图像XY方向的一阶导数,得到原图像的梯度,计算梯度幅度图像,并进行反色处理,便得到PS中的查找边缘效果。
代码:
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
int main()
{
cv::Mat img = cv::imread("D:\\timg.jpg");
cv::Mat sobelX;
cv::Mat sobelY;
cv::Mat sobel, result;
cv::Sobel(img, sobelX, CV_32F, 1, 0, 3);
cv::Sobel(img, sobelY, CV_32F, 0, 1, 3);
cv::multiply(sobelX, sobelX, sobelX);
cv::multiply(sobelY, sobelY, sobelY);
cv::sqrt(sobelX + sobelY, sobel);
sobel = min(sobel, 255);
sobel.convertTo(result, CV_8UC3, -1, 255);
cv::imshow("result", result);
cv::waitKey(200000);
return 0;
}
原图:
效果图: