ToB企服应用市场:ToB评测及商务社交产业平台

标题: OpenCV 图像处置惩罚中滤波技能介绍 [打印本页]

作者: 不到断气不罢休    时间: 2024-8-29 12:21
标题: OpenCV 图像处置惩罚中滤波技能介绍
VS2022设置OpenCV环境

图像处置惩罚中滤波技能

图像滤波是图像处置惩罚中的一种重要技能,用于改善图像质量或提取图像中的特定特征。以下是一些常见的图像滤波技能:
每种滤波技能都有其特定的应用场景和效果。选择符合的滤波器取决于图像的特性和处置惩罚目的。例如,高斯滤波适合于平滑图像和去除高斯噪声,而中值滤波则更适合于去除椒盐噪声。在实际应用中,可能需要联合多种滤波技能来达到最佳效果。
均值滤波

  1. #include <opencv2/opencv.hpp>
  2. int main() {
  3.     cv::Mat image, blur_image;
  4.     image = cv::imread("amy.png", cv::IMREAD_COLOR);
  5.     cv::blur(image, blur_image, cv::Size(5, 5)); // 5x5的均值滤波
  6.     cv::imshow("blur_image", blur_image);
  7.     cv::waitKey(0); // 等待用户按键
  8.     return 0;
  9. }
复制代码

高斯滤波

  1. #include <opencv2/opencv.hpp>
  2. int main() {
  3.     cv::Mat image, gaussian_image;
  4.     image = cv::imread("amy.png", cv::IMREAD_COLOR);
  5.     cv::GaussianBlur(image, gaussian_image, cv::Size(5, 5), 0); // 5x5的高斯滤波
  6.     cv::imshow("gaussian_image", gaussian_image);
  7.     cv::waitKey(0); // 等待用户按键
  8.     return 0;
  9. }
复制代码

中值滤波

  1. #include <opencv2/opencv.hpp>
  2. int main() {
  3.     cv::Mat image, median_image;
  4.     image = cv::imread("amy.png", cv::IMREAD_COLOR);
  5.     cv::medianBlur(image, median_image, 5); // 5x5的中值滤波
  6.     cv::imshow("median_image", median_image);
  7.     cv::waitKey(0); // 等待用户按键
  8.     return 0;
  9. }
复制代码

双边滤波

  1. #include <opencv2/opencv.hpp>
  2. int main() {
  3.     cv::Mat image, bilateral_image;
  4.     image = cv::imread("amy.png", cv::IMREAD_COLOR);
  5.     cv::bilateralFilter(image, bilateral_image, 9, 75, 75); // 9x9的双边滤波
  6.     cv::imshow("bilateral_image", bilateral_image);
  7.     cv::waitKey(0); // 等待用户按键
  8.     return 0;
  9. }
复制代码

锐化滤波

  1. #include <opencv2/opencv.hpp>
  2. int main() {
  3.     cv::Mat image, sharpen_image;
  4.     image = cv::imread("amy.png", cv::IMREAD_COLOR);
  5.     cv::Mat kernel = (cv::Mat_<char>(3, 3) << 0, -1, 0,
  6.         -1, 5, -1,
  7.         0, -1, 0);
  8.     cv::filter2D(image, sharpen_image, image.depth(), kernel);
  9.     cv::imshow("sharpen_image", sharpen_image);
  10.     cv::waitKey(0); // 等待用户按键
  11.     return 0;
  12. }
复制代码

拉普拉斯滤波

  1. #include <opencv2/opencv.hpp>
  2. int main() {
  3.     cv::Mat image, laplacian_image;
  4.     image = cv::imread("amy.png", cv::IMREAD_COLOR);
  5.     cv::Laplacian(image, laplacian_image, CV_16S, 1);
  6.     cv::convertScaleAbs(laplacian_image, laplacian_image); // 转换为无符号8位
  7.     cv::imshow("laplacian_image", laplacian_image);
  8.     cv::waitKey(0); // 等待用户按键
  9.     return 0;
  10. }
复制代码

方框滤波

  1. #include <opencv2/opencv.hpp>
  2. int main() {
  3.     cv::Mat src_image, box_image;
  4.     src_image = cv::imread("amy.png", cv::IMREAD_COLOR);
  5.     cv::blur(src_image, box_image, cv::Size(3, 3), cv::Point(-1, -1),
  6.     cv::BORDER_DEFAULT);
  7.     cv::imshow("box_image", box_image);
  8.     cv::waitKey(0); // 等待用户按键
  9.     return 0;
  10. }
复制代码

自定义滤波器

  1. #include <opencv2/opencv.hpp>
  2. int main() {
  3.     cv::Mat src_image, custom_filtered_image;
  4.     src_image = cv::imread("amy.png", cv::IMREAD_COLOR);
  5.     cv::Mat custom_kernel = (cv::Mat_<float>(3, 3) << 1, 1, 1,
  6.         1, 0, 1,
  7.         1, 1, 1);
  8.     cv::filter2D(src_image, custom_filtered_image, src_image.depth(), custom_kernel);
  9.     cv::imshow("custom_filtered_image", custom_filtered_image);
  10.     cv::waitKey(0); // 等待用户按键
  11.     return 0;
  12. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4