• c++颜色空间转换


    c++颜色空间转换

    cvtColor函数标识符颜色空间转换的类型

    cvtColor函数使用不同的标识符来表示颜色空间转换的类型。这些标识符通常位于OpenCV的cv命名空间中,并以cv::COLOR_作为前缀。以下是一些常用的cvtColor函数标识符:

    1. BGR到灰度:

      • cv::COLOR_BGR2GRAY
    2. 灰度到BGR:

      • cv::COLOR_GRAY2BGR
    3. BGR到HSV(色相、饱和度、亮度):

      • cv::COLOR_BGR2HSV
    4. BGR到Lab(明亮度、绿红、蓝黄):

      • cv::COLOR_BGR2Lab
    5. BGR到RGB(通常用于反转颜色通道顺序):

      • cv::COLOR_BGR2RGB
    6. BGR到RGBA(添加透明度通道):

      • cv::COLOR_BGR2RGBA
    7. BGR到YUV(亮度和色度):

      • cv::COLOR_BGR2YUV
    8. YUV到BGR:

      • cv::COLOR_YUV2BGR
    9. BGR到XYZ(CIE 1931颜色空间):

      • cv::COLOR_BGR2XYZ
    10. HSV到BGR反转:

      • cv::COLOR_HSV2BGR

    这些标识符用于指定颜色空间转换的源和目标颜色空间。你可以根据需要选择适当的标识符,然后将其传递给cvtColor函数的code参数,以执行特定的颜色空间转换。

    cvtColor函数解析

    cvtColor是OpenCV库中用于颜色空间转换的函数。这个函数用于将一个图像从一种颜色空间转换为另一种颜色空间。它的基本语法如下:

    void cvtColor(InputArray src, OutputArray dst, int code, int dstCn = 0);
    
    • 1
    • src:输入图像,可以是Mat对象。
    • dst:输出图像,用于存储颜色空间转换后的结果,也可以是Mat对象。
    • code:用于指定颜色空间转换的代码,例如cv::COLOR_BGR2GRAY表示从BGR到灰度。
    • dstCn:可选参数,用于指定输出图像的通道数,默认为0。

    以下是一个示例,演示如何使用cvtColor函数将一张彩色图像转换为灰度图像:

    #include 
    
    int main() {
        // 读取图像
        cv::Mat inputImage = cv::imread("input.jpg");
    
        if (inputImage.empty()) {
            std::cerr << "Error: Unable to read input image." << std::endl;
            return -1;
        }
    
        // 创建一个用于存储灰度图像的Mat对象
        cv::Mat grayImage;
    
        // 将BGR图像转换为灰度图像
        cv::cvtColor(inputImage, grayImage, cv::COLOR_BGR2GRAY);
    
        // 保存转换后的灰度图像
        cv::imwrite("output_gray.jpg", grayImage);
    
        // 显示原始图像和转换后的灰度图像
        cv::imshow("Original Image", inputImage);
        cv::imshow("Grayscale Image", grayImage);
    
        cv::waitKey(0);
        cv::destroyAllWindows();
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    在这个示例中,我们首先读取一张彩色图像,然后使用cvtColor函数将它从BGR颜色空间转换为灰度图像。转换后的图像存储在名为grayImage的Mat对象中。接着,我们使用imwrite函数将灰度图像保存为文件,并使用imshow函数显示原始图像和灰度图像。

    请注意,code参数确定了从哪个颜色空间到哪个颜色空间的转换。你可以根据需要使用不同的code值执行其他颜色空间转换,具体取决于你的应用。

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Swagger3被拦截器拦截并报错Unable to infer base url或者Unable to render this definition
    七夕时如何拯救躁动不安的心
    Python编程之子进程管理(subprocess)详解
    Java 进阶(一)-- 并发
    SSH 与 SSM
    5G面试题目和答案,计算机面试
    转行软件测试,薪资10K | 真正明智的人,懂得脚踏实地 ...
    20230905 比赛总结
    MYSQL指令
    驱动器类产品的接口EMC拓扑方案
  • 原文地址:https://blog.csdn.net/qq_46107892/article/details/133387027