图像处理拉普拉斯c++
时间: 2023-10-03 08:06:13 浏览: 40
拉普拉斯算子是一种常用的图像边缘检测方法,可以通过对图像进行卷积来实现。以下是一个使用C++实现的拉普拉斯算法的示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读入图像
Mat image = imread("lena.jpg", IMREAD_GRAYSCALE);
if (image.empty())
{
cout << "Could not open or find the image!\n" << endl;
return -1;
}
// 输出原始图像
imshow("Original Image", image);
// 定义拉普拉斯核
Mat laplacianKernel = (Mat_<int>(3, 3) <<
0, 1, 0,
1, -4, 1,
0, 1, 0);
// 对图像进行卷积
Mat laplacianImage;
filter2D(image, laplacianImage, CV_32F, laplacianKernel);
// 将结果转换为8位图像并输出
laplacianImage.convertTo(laplacianImage, CV_8U);
imshow("Laplacian Image", laplacianImage);
waitKey(0);
return 0;
}
```
这里使用了OpenCV库中的`filter2D()`函数对图像进行卷积,输出的图像会比原始图像暗一些,因此需要将结果转换为8位图像。