int main()
{
// 读取原始图片
Mat image= cv::imread("lena.jpg",0);
// 定义5X5LOG模板
Mat mask=(Mat_<char>(5,5)<<-2,-4,-4,-4,-2,
-4, 0, 8, 0,-4,
-4, 8,24, 8,-4,
-4, 0, 8, 0,-4,
-2,-4,-4,-4,-2 );
// LOG模板对原始图片卷积
Mat laplace;
filter2D(image,laplace,image.depth (),mask);
for(int i=1;i<=laplace.cols-2;i++)
for(int j=1;j<=laplace.rows-2;j++)
if(laplace.at<uchar>(j,i)*laplace.at<uchar>(j-1,i)<0 || laplace.at<uchar>(j,i)*laplace.at<uchar>(j+1,i)<0
|| laplace.at<uchar>(j,i)*laplace.at<uchar>(j,i-1)<0 || laplace.at<uchar>(j,i)*laplace.at<uchar>(j,i+1)<0)
laplace.at<uchar>(j,i)=0;
else
laplace.at<uchar>(j,i)=255;
namedWindow("LOG边缘");
imshow("LOG边缘",laplace);
waitKey(10000000);
return 0;
}