Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV:如何在图像上应用彩虹渐变贴图?_C++_C_Opencv_Gradient - Fatal编程技术网

C++ OpenCV:如何在图像上应用彩虹渐变贴图?

C++ OpenCV:如何在图像上应用彩虹渐变贴图?,c++,c,opencv,gradient,C++,C,Opencv,Gradient,假设我们通过openCV修改了一幅图像: 现在,我们很乐意申请: 所以我想知道如何通过OpenCV?< /P> < P>应用渐变映射(彩虹色)。这里是一种用Python创建假/伪彩色图像的方法,转换到C++应该非常简单。概述: 以灰度和RGB格式打开图像 将RGB图像转换为HSV(色调、饱和度、值/亮度)颜色空间。这是一个圆柱形空间,色调由极轴上的单个值表示 将色调通道设置为我们已经打开的灰度图像,这是关键步骤 将值和饱和通道都设置为最大值 转换回RGB空间(否则显示将不正确) 不过有几个陷

假设我们通过openCV修改了一幅图像:

现在,我们很乐意申请:


所以我想知道如何通过OpenCV?< /P> < P>应用渐变映射(彩虹色)。这里是一种用Python创建假/伪彩色图像的方法,转换到C++应该非常简单。概述:

  • 以灰度和RGB格式打开图像
  • 将RGB图像转换为HSV(色调、饱和度、值/亮度)颜色空间。这是一个圆柱形空间,色调由极轴上的单个值表示
  • 将色调通道设置为我们已经打开的灰度图像,这是关键步骤
  • 将值和饱和通道都设置为最大值
  • 转换回RGB空间(否则显示将不正确)
  • 不过有几个陷阱

  • 由于色调以度为单位,并且颜色光谱表示为0到180(不是0-256,也不是0-360(有时是这样)),因此我们需要通过乘以
    180/256.0
  • 在opencv案例中,色调颜色比例从蓝色开始(而不是像图像中那样的红色)。即,映射如下所示:
  • 从:到:

    如果这对更改很重要,我们可以通过偏移所有色调元素并将其环绕180(否则它将饱和)来进行更改。代码通过在该截止点遮罩图像,然后适当偏移来实现这一点。使用120的偏移量,生成颜色比例:

    从:到:

    用这种方法处理的图像看起来和你的很匹配(最后)

    使用偏移量=120处理您的图像:


    现在存在一个名为openCV的函数,它使这个过程变得简单。下面的代码将完成此任务

    image_cm = cv2.applyColorMap(image, cv2.COLORMAP_JET))
    
    这就是结果:

    图1:原始平面
    图2:Plane在应用colormap后

    好吧,我对OpenCV一无所知,但是这个过程分为两部分,从RGB到灰度,然后使用这个渐变将灰度恢复到RGB。请参见第一部分和第二部分。@如果我们想使用opencv在像这里这样的图像上使用photoshop的渐变色空间,该怎么办
    image_cm = cv2.applyColorMap(image, cv2.COLORMAP_JET))