Python中有OpenCV色图吗?
我知道在 OpenCV 中有类似 Matlab 和 matplotlib 的颜色映射 。文档里讲了怎么在 C++ 中使用这个功能。我在想,使用 cv2 的 Python 里有没有类似的选项。我搜索了很多,但没有找到。我知道 matplotlib 有颜色映射的选项可以用,但如果 cv2 也提供这样的功能,那我就可以省去把 matplotlib 的颜色映射转换成 OpenCV 图像的麻烦。这实在是太麻烦了。我需要这个功能来做我的项目。
4 个回答
1
很遗憾,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]))
2
真可惜,看起来这个功能还没有加入到Python的接口里。不过你可以去看看在modules/contrib/src/colormap.cpp里的实现,比如说jetmap其实就是一个查找表,你可以直接拿来用。
17
对于OpenCV 2.4.11版本,applyColorMap
在Python中是可以使用的(尽管2.4.11的文档里只提到了C++):
import cv2
im = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE)
imC = cv2.applyColorMap(im, cv2.COLORMAP_JET)
另外,可以参考这个Stack Overflow的回答。