python中是否有OpenCV colormap?

2024-04-24 13:49:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道 Matlab, matplotlib style colormap in OpenCV 。文档说明了C++的用法。我想知道对于使用cv2的python是否也存在这样的选项。我搜了很多东西什么也没找到。我知道matplotlib的colormap选项我可以使用,但如果cv2提供了这样的选项,我可以消除将matplotlib colormap s转换为opencv图像的开销。很笨拙。我的项目需要它。


Tags: 项目in文档图像用法matplotlibstyle选项
3条回答
< op> v2.2.11,^ {< CD1>}在Python中工作(即使2.4.11 docs仍然只列出C++):

import cv2
im = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE)
imC = cv2.applyColorMap(im, cv2.COLORMAP_JET)

另请参见this Stack Overflow answer

遗憾的是OpenCV没有任何颜色映射,但您可以编写一个。没那么难。

class ColorMap:
    startcolor = ()
    endcolor = ()
    startmap = 0
    endmap = 0
    colordistance = 0
    valuerange = 0
    ratios = []    

    def __init__(self, startcolor, endcolor, startmap, endmap):
        self.startcolor = np.array(startcolor)
        self.endcolor = np.array(endcolor)
        self.startmap = float(startmap)
        self.endmap = float(endmap)
        self.valuerange = float(endmap - startmap)
        self.ratios = (self.endcolor - self.startcolor) / self.valuerange

    def __getitem__(self, value):
        color = tuple(self.startcolor + (self.ratios * (value - self.startmap)))
        return (int(color[0]), int(color[1]), int(color[2]))

遗憾的是,看起来它还没有进入python api。但是您可以查看modules/contrib/src/colormap.cpp中的实现,例如jetmap只是一个查找表,您可以直接窃取它

相关问题 更多 >