#include<opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main() {
Mat src, dst;
src = imread("D:/cv_img_test/dog.jpg");
if (src.empty()) {
cout << "无法加载图像\n" << endl;
return -1;
}
namedWindow("Input Img", WINDOW_AUTOSIZE);
imshow("Input Img", src);
//creat DOG img
Mat d1, d2;
GaussianBlur(src, d1, Size(3, 3), 0);
GaussianBlur(d1, d2, Size(3, 3), 0);
//imshow("d1", d1);
//imshow("d2", d2);
Mat DOG_img;
subtract(d1, d2, DOG_img, Mat());
normalize(DOG_img, DOG_img, 255, 0, NORM_MINMAX);
imshow("DOG result", DOG_img);
//creat Sobel
Mat d3, xgrad, ygrad;
medianBlur(src, d3, 3);//中值平滑
cvtColor(d3, d3, COLOR_BGR2GRAY);//转灰度图像
Sobel(d3, xgrad, CV_32F, 1, 0, 3);//x梯度
Sobel(d3, ygrad, CV_32F, 0, 1, 3);//y梯度
convertScaleAbs(xgrad, xgrad);//将32F转换到8U类型,此API也可用于快速调整图像对比度与亮度
convertScaleAbs(ygrad, ygrad);
imshow("xgrad", xgrad);
imshow("ygrad", ygrad);
addWeighted(xgrad, 0.5, ygrad, 0.5, 0.0, dst);//图像混合
imshow("dst", dst);
Mat dst1;
Mat kernel = (Mat_<int>(3,3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);//锐化算子
filter2D(dst, dst1, -1, kernel);
imshow("dst1", dst1);
waitKey(0);
return 0;
}
1.DOG图像
高斯差分图像,可用于特征点选取
https://blog.youkuaiyun.com/songzitea/article/details/8831909
2.Sobel算子运用
Sobel算子对噪声敏感,因此在使用前需进行降噪处理
3.自定义线性滤波
filter2D(src,dst,depth,kernel,point/*锚点位置*/,int beta/*偏移值**/)
自定义算子
Mat kernel = (Mat_<int>(3,3)<<0,-1,0,-1,5,-1,0,-1,0)//锐化算子
4.convertScaleAbs用法
可用于快速调整图像对比度与亮度,也可以将16位,32位图像转换成8U图像进行输出。