- 操作系统: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;
}