#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage = imread("lena.jpg");
//判断图像是否加载成功
if(srcImage.data)
cout << "图像加载成功!" << endl << endl;
else
{
cout << "图像加载失败!" << endl << endl;
return -1;
}
namedWindow("srcImage", WINDOW_AUTOSIZE);
imshow("srcImage", srcImage);
Mat kern = (Mat_<char>(3,3) << 0, -1 ,0,
-1, 5, -1,
0, -1, 0);
Mat dstImage;
filter2D(srcImage,dstImage,srcImage.depth(),kern);
namedWindow("dstImage",WINDOW_AUTOSIZE);
imshow("dstImage",dstImage);
waitKey(0);
return 0;
}
运行结果:
但如果把卷积内核换成:
Mat kern = (Mat_<char>(3,3) << 0, -1 ,0,
-1, 4, -1,
0, -1, 0);
//5编程了4.
结果就变成了
请问卷积内核的这种改变是如何让图片产生这样的结果的?