概述
@VS2015+Opencv4.5.2的拉普拉斯算子源码
这里附上拉普拉斯算子的源码,算法小白,多多指教
#include<opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
const int Kenel_s = 3;//卷积核大小
int main()
{
//读入图片
Mat src, dst, dst_L;
src = imread("Moon.jpg",0);
copyMakeBorder(src, src, Kenel_s - 1, Kenel_s - 1, Kenel_s - 1, Kenel_s - 1, BORDER_CONSTANT, Scalar(0));//填充图像
imshow("Image of src", src);
src.copyTo(dst);
/*盒式滤波器模糊处理
for (int i = 0; i < src.rows - 2 * (Kenel_s-1); i++)
{
//创建遍历指针
uchar *src_p_current = src.ptr(i+Kenel_s-1);//原图像指针
uchar *src_p_upper = src.ptr(i + Kenel_s);
uchar *src_p_lower = src.ptr(i + Kenel_s - 2);
uchar *dst_p = dst.ptr(i+Kenel_s - 1);//目的图像指针
for (int j = 0; j < src.cols*src.channels()-2*(Kenel_s-1); j++)
{
dst_p[j + Kenel_s - 1] = saturate_cast<uchar>((src_p_current[j + Kenel_s - 1] + src_p_current[j + Kenel_s - 2] + src_p_current[j + Kenel_s] + src_p_upper[j + Kenel_s - 1] + src_p_upper[j + Kenel_s] + src_p_upper[j + Kenel_s - 2] + src_p_lower[j + Kenel_s - 1] + src_p_lower[j + Kenel_s] + src_p_lower[j + Kenel_s - 2])/9);
}
}*/
//中值滤波处理
medianBlur(dst, dst,11);
imshow("Image of medianbulr", dst);
//阈值处理
threshold(dst, dst, 20, 255, THRESH_BINARY_INV);
imshow("Image of threshod", dst);
//拉普拉斯算子锐化处理
dst.copyTo(dst_L);
Mat Dou_val = Mat::zeros(dst_L.rows, dst_L.cols, dst_L.type());
Mat Dou_val_L = Mat::zeros(dst_L.rows, dst_L.cols, dst_L.type());
for (int i = 0 + Kenel_s - 1; i < dst.rows - Kenel_s + 1; i++)
{
//创建遍历指针
uchar *current = dst.ptr(i);
uchar *upper = dst.ptr(i - 1);
uchar *lower = dst.ptr(i + 1);
uchar *point_l = Dou_val_L.ptr(i);
//开始遍历
for (int j = Kenel_s - 1; j < dst.cols*dst.channels() - Kenel_s + 1; j++)
{
//预设拉普拉斯算子卷积核为:Mat Kernel<<1,1,1,1,-8,1,1,1,1
Dou_val.at<uchar>(i, j) = upper[j] + upper[j - 1] + upper[j + 1] + current[j - 1] -8* current[j] + current[j + 1] + lower[j] + lower[j - 1] + lower[j + 1];
if (Dou_val.at<uchar>(i,j) != 0)
{
point_l[j] = 255;
}
}
}
//与原图像叠加
Mat Result = Dou_val_L + src;
imshow("Image of Laplacian", Result);
while (waitKey(0) != 'q') {};
return 0;
}
原图:
提取的边界:
叠加显示:
最后
以上就是会撒娇曲奇为你收集整理的VS2015+Opencv4.5.2的拉普拉斯算子源码的全部内容,希望文章能够帮你解决VS2015+Opencv4.5.2的拉普拉斯算子源码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复