OpenCV提供了一些函数来对图像进行平滑和锐化处理。下面是一些常用的函数和示例:
- 平滑处理
- cv::blur: 通过均值滤波对图像进行平滑处理。
- cv::GaussianBlur: 通过高斯滤波对图像进行平滑处理。
- cv::medianBlur: 通过中值滤波对图像进行平滑处理。
示例:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main() {
Mat image = imread("lena.jpg");
if (image.empty()) {
cout << "Could not open or find the image" << endl;
return -1;
}
// 对图像进行平滑处理
Mat smoothImage;
blur(image, smoothImage, Size(5, 5));
Mat gaussianImage;
GaussianBlur(image, gaussianImage, Size(5, 5), 0);
Mat medianImage;
medianBlur(image, medianImage, 5);
namedWindow("Original Image", WINDOW_NORMAL);
imshow("Original Image", image);
namedWindow("Smooth Image", WINDOW_NORMAL);
imshow("Smooth Image", smoothImage);
namedWindow("Gaussian Image", WINDOW_NORMAL);
imshow("Gaussian Image", gaussianImage);
namedWindow("Median Image", WINDOW_NORMAL);
imshow("Median Image", medianImage);
waitKey(0);
return 0;
}
- 锐化处理
- cv::filter2D: 通过卷积操作对图像进行锐化处理。
- cv::filter2D: 通过卷积操作对图像进行锐化处理。
示例:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main() {
Mat image = imread("lena.jpg");
if (image.empty()) {
cout << "Could not open or find the image" << endl;
return -1;
}
// 对图像进行锐化处理
Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0); // 定义锐化卷积核
Mat sharpImage;
filter2D(image, sharpImage, -1, kernel);
namedWindow("Original Image", WINDOW_NORMAL);
imshow("Original Image", image);
namedWindow("Sharp Image", WINDOW_NORMAL);
imshow("Sharp Image", sharpImage);
waitKey(0);
return 0;
}
在上面的示例中,我们使用cv::filter2D函数对图像进行锐化处理。锐化卷积核的定义如下:
Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
这个卷积核可以增强图像的边缘特征,使图像看起来更锐利。您可以尝试不同的卷积核来达到不同的效果。
免费分享一些我整理的人工智能学习资料给大家,整理了很久,非常全面。包括一些人工智能基础入门视频+AI常用框架实战视频、计算机视觉、机器学习、图像识别、NLP、OpenCV、YOLO、pytorch、深度学习与神经网络等视频、课件源码、国内外知名精华资源、AI热门论文等。
下面是部分截图,点击文末名片关注我的公众号【AI技术星球】发送暗号 321 领取(一定要发暗号 321)
目录
一、人工智能免费视频课程和项目
二、人工智能必读书籍
三、人工智能论文合集
四、机器学习+计算机视觉基础算法教程
五、深度学习机器学习速查表(共26张)
学好人工智能,要多看书,多动手,多实践,要想提高自己的水平,一定要学会沉下心来慢慢的系统学习,最终才能有所收获。