【问题标题】:Is there OpenCV colormap in python?python中是否有OpenCV颜色图?
【发布时间】:2021-06-13 09:41:47
【问题描述】:

我知道 Matlab, matplotlib style colormap in OpenCV 。该文档解释了它在 C++ 中的用法。我想知道使用 cv2 的 python 是否也存在这样的选项。我用谷歌搜索了很多,一无所获。我知道我可以使用 matplotlib 的颜色图选项,但如果 cv2 提供了这样的选项,我可以消除将 matplotlib 颜色图转换为 opencv 图像的开销。它的笨拙。我的项目需要它。

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    对于 OpenCV 2.4.11,applyColorMap 在 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

    【讨论】:

      【解决方案2】:

      很遗憾,它似乎还没有进入 python api。但你可以看看 modules/contrib/src/colormap.cpp 中的实现,例如jetmap 只是一个查找表,你可以偷它

      【讨论】:

      • 我真的希望它已经实现了......很好,我会继续它。谢谢
      【解决方案3】:

      遗憾的是,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]))
      

      【讨论】:

      • 你能用一个例子解释一下这应该如何工作吗?
      【解决方案4】:

      无法让 Python 中的前面的 applyColorMap 示例正常工作。 以为我分享。 我为“胖”道歉。 如果您的摄像机未被识别,或者有多个摄像头,请将“0”替换为“1”

      import cv2
      import numpy as np
      
      frameWidth = 940
      frameHeight = 680
      cap = cv2.VideoCapture(0)
      cap.set(3, frameWidth)  # 3=width, 4=height
      cap.set(4, frameHeight)
      
      while True:
          success, imgColor, = cap.read()
          img = cv2.resize(imgColor, (frameWidth, frameHeight))  # if want to resize frame
          
          # ORIG IMG
          cv2.moveWindow("img", 0, 0)  # relocate shift reposition move so frame is at top left corner of monitor
          cv2.imshow("img", img)
          
          # COLOR ENHANCED
          cv2.moveWindow("imgColor", frameWidth, 0)  # relocate shift reposition move to side by side
          # COLORMAP_AUTUMN = 0
          # COLORMAP_BONE = 1
          # COLORMAP_COOL = 8
          # COLORMAP_HOT = 11
          # COLORMAP_HSV = 9
          # COLORMAP_JET = 2
          # COLORMAP_OCEAN = 5
          # COLORMAP_PINK = 10
          # COLORMAP_RAINBOW = 4
          # COLORMAP_SPRING = 7
          # COLORMAP_SUMMER = 6
          # COLORMAP_WINTER = 3
          cv2.imshow("imgColor", cv2.applyColorMap(imgColor, 3))  # change the last variable in here
      
          if cv2.waitKey(1) & 0xFF == ord('q'):
              break
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-27
        • 2017-02-04
        • 1970-01-01
        • 2019-12-16
        • 1970-01-01
        • 2020-06-03
        相关资源
        最近更新 更多