基于opencv用C++实现图像锐化代码
时间: 2024-12-15 17:17:25 浏览: 10
在OpenCV (Open Source Computer Vision Library) 中,可以使用C++编写代码来对图像进行锐化处理。这里是一个简单的基于高斯模糊之后再取差值的拉普拉斯算子(Laplacian operator)实现图像锐化的示例:
```cpp
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
void imageSharpening(const cv::Mat& src, cv::Mat& dst)
{
// 使用OpenCV的高斯滤波器进行模糊处理
double kernelSize = 5; // 高斯核大小,可以根据需要调整
cv::Mat blur;
cv::GaussianBlur(src, blur, Size(kernelSize, kernelSize), 0);
// 拉普拉斯算子进行锐化
cv::Mat laplacian;
cv::Laplacian(blur, laplacian, CV_8U); // 输出灰度图像
// 将拉普拉斯结果与原图做差得到锐化后的图像
dst = src - laplacian;
}
int main(int argc, char** argv)
{
// 读取输入图片
cv::Mat img = cv::imread("input.jpg", IMREAD_COLOR);
if (!img.data)
return -1;
// 创建一个新的Mat用于存储锐化后的图像
cv::Mat sharpenedImage;
imageSharpening(img, sharpenedImage);
// 显示原始图像和锐化后的图像
cv::imshow("Original Image", img);
cv::imshow("Sharpened Image", sharpenedImage);
// 等待用户按键并保存结果
cv::waitKey(0);
cv::imwrite("output.jpg", sharpenedImage);
return 0;
}
```
阅读全文