OpenCV计算摄影学(14)实现对比度保留去色(Contrast Preserving Decolorization)的函数decolor()

发布于:2025-03-09 ⋅ 阅读:(40) ⋅ 点赞:(0)
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

将彩色图像转换为灰度图像。它是数字印刷、风格化的黑白照片渲染,以及许多单通道图像处理应用中的基本工具。
cv::decolor 是 OpenCV 中用于实现对比度保留去色(Contrast Preserving Decolorization)的一个函数。此函数可以将输入的彩色图像转换为灰度图像,同时生成一个颜色增强图,该增强图可用于后续处理或分析。这种方法旨在保持原始图像中的对比度信息,使得转换后的灰度图像尽可能地保留原始图像的视觉特性。

函数原型

void cv::decolor 	
(
	InputArray  	src,
	OutputArray  	grayscale,
	OutputArray  	color_boost 
) 		

参数

  • 参数src:输入的8位3通道图像。
  • 参数grayscale:输出的8位1通道图像。
  • 参数color_boost:输出的8位3通道图像。

此函数应用于彩色图像。

代码示例

#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    // 加载图像
    cv::Mat src = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/jiangnan.jpg" );
    if ( src.empty() )
    {
        std::cerr << "无法加载图像!" << std::endl;
        return -1;
    }

    // 初始化输出矩阵
    cv::Mat grayscale, color_boost;

    // 应用 decolor 函数
    cv::decolor( src, grayscale, color_boost );

    // 显示原始图像、灰度图像和颜色增强图像
    cv::imshow( "Original Image", src );
    cv::imshow( "Grayscale Image", grayscale );
    cv::imshow( "Color Boost Image", color_boost );

    // 将结果保存到文件
    cv::imwrite( "grayscale_image.jpg", grayscale );
    cv::imwrite( "color_boost_image.jpg", color_boost );

    cv::waitKey( 0 );
    return 0;
}

运行结果

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到