卷积可以对图像进行模糊,锐化,边沿查找等操作。
常见的算子:
定义Robert算子,当然也可以定义sobel算子和拉普拉斯算子。利用filter2D函数实现自定义线性滤波。
代码实现图像的逐渐模糊:
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
int main(int argc, char** argv) {
Mat dst;
Mat src = imread("C:/Users/ThinkPad/Desktop/1.PNG");
if (!src.data) {
printf("could not find");
return -1;
}
namedWindow("input", cv::WINDOW_AUTOSIZE);
namedWindow("output", cv::WINDOW_AUTOSIZE);
cv::imshow("input", src);
int index = 1;
int c = 0;
while (true) {
c = waitKey(500);
if ((char)c == 27) {
break;
}
int ksize = 3 + 2 * (index % 5);
Mat kernel = Mat::ones(Size(ksize, ksize), CV_32F)/ (float)(ksize * ksize);
filter2D(src, dst, -1, kernel, Point(-1, -1), 0);
imshow("output", dst);
index++;
}
return 0;
}
这只是两个过程中的模糊图像,效果可以实现图像的逐渐模糊。ESC是退出运行。