opencv usm锐化 c++代码
时间: 2024-08-14 15:09:57 浏览: 46
OpenCV中的USM(Unsharp Masking)是一种用于图像锐化的技术。在C++中,你可以通过`opencv4x42`库来实现。以下是一个简单的示例,展示了如何使用USM模块进行锐化:
```cpp
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc.hpp>
int main() {
// 加载图像
cv::Mat src = cv::imread("input.jpg", cv::IMREAD_COLOR);
if (src.empty()) {
std::cout << "Failed to load image." << std::endl;
return -1;
}
// 定义USM核大小和强度
int kernelSize = 5; // 可调整
float sigma = 1.0f; // 确保是正数
float amount = 1.5f; // 锐化程度
// 创建模糊和高斯卷积核
cv::Mat blurKernel = cv::getGaussianKernel(kernelSize, sigma);
cv::Mat usmKernel = (blurKernel * -amount) + 1.0;
// 应用USM
cv::Mat sharpened;
cv::filter2D(src, sharpened, CV_8UC3, usmKernel);
// 显示原图和锐化后的结果
namedWindow("Original Image", WINDOW_NORMAL);
imshow("Original Image", src);
namedWindow("Sharpened Image", WINDOW_NORMAL);
imshow("Sharpened Image", sharpened);
// 等待用户按键
waitKey(0);
return 0;
}
```
在这个例子中,我们首先加载一张图片,然后定义了USM的核大小、平滑度(sigma)和锐化程度(amount)。接着创建了一个高斯模糊核,并计算出USM核。最后,我们对原始图像应用USM滤波器并显示对比效果。