以下是使用 C++ 编写的两段代码,实现图像颜色对比度增强:

  1. 直方图均衡化(Histogram Equalization):
#include <opencv2/opencv.hpp>

int main() {
    // 读取图像
    cv::Mat image = cv::imread('image.jpg', cv::IMREAD_COLOR);

    // 将图像转换为灰度图像
    cv::Mat gray_image;
    cv::cvtColor(image, gray_image, cv::COLOR_BGR2GRAY);

    // 对灰度图像进行直方图均衡化
    cv::Mat equalized_image;
    cv::equalizeHist(gray_image, equalized_image);

    // 将均衡化后的图像转换回彩色图像
    cv::Mat color_equalized_image;
    cv::cvtColor(equalized_image, color_equalized_image, cv::COLOR_GRAY2BGR);

    // 显示原始图像和均衡化后的图像
    cv::imshow('Original Image', image);
    cv::imshow('Equalized Image', color_equalized_image);
    cv::waitKey(0);
    cv::destroyAllWindows();

    return 0;
}
  1. 自适应直方图均衡化(Adaptive Histogram Equalization):
#include <opencv2/opencv.hpp>

int main() {
    // 读取图像
    cv::Mat image = cv::imread('image.jpg', cv::IMREAD_COLOR);

    // 将图像转换为灰度图像
    cv::Mat gray_image;
    cv::cvtColor(image, gray_image, cv::COLOR_BGR2GRAY);

    // 对灰度图像进行自适应直方图均衡化
    cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE();
    clahe->setClipLimit(2.0);
    clahe->setTilesGridSize(cv::Size(8, 8));
    cv::Mat equalized_image;
    clahe->apply(gray_image, equalized_image);

    // 将均衡化后的图像转换回彩色图像
    cv::Mat color_equalized_image;
    cv::cvtColor(equalized_image, color_equalized_image, cv::COLOR_GRAY2BGR);

    // 显示原始图像和均衡化后的图像
    cv::imshow('Original Image', image);
    cv::imshow('Equalized Image', color_equalized_image);
    cv::waitKey(0);
    cv::destroyAllWindows();

    return 0;
}

请确保已将图像路径正确指定为'image.jpg'或替换为你自己的图像路径。这些代码使用了OpenCV库,因此需要确保已正确安装和配置OpenCV。


原文地址: https://www.cveoy.top/t/topic/mKQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录