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