【问题标题】:OpenCV: filter by color in imageOpenCV:按图像中的颜色过滤
【发布时间】:2019-07-08 18:18:15
【问题描述】:

如何在 python 中使用 OpenCV 仅显示 RGB 图像中的一种颜色? 这个想法是能够以与RGB光谱中某种颜色的强度相对应的灰度打印图像。

【问题讨论】:

    标签: python opencv filtering


    【解决方案1】:

    您可以使用split:

    blue, green, red = cv2.split(img)
    

    或者,由于这是一项耗时的操作,并且您只需要其中一个通道(例如,红色),您可以直接对原始图像进行切片,如下所示:

    red = img[:,:,2]
    

    这将返回灰度图像,其中较亮的像素是原始图像中具有较高红色值的像素。

    希望这有帮助!

    【讨论】:

    • 我打算把这个问题做成一个自我回答的问题,但是,我觉得你的更好。谢谢
    【解决方案2】:
    # import usefull libraries
    import numpy as np
    import cv2
    
    # Set global parameters
    RED = 0
    GREEN = 1
    BLUE = 2
    
    # Load the image
    img_color = cv2.imread("fruits.jpg", flags=cv2.IMREAD_COLOR)
    
    # Filter the image by desired color
    img_color_filtered = np.asarray([y[RED] for x in img_color for y in x]).reshape((img_color.shape[:2]))
    

    【讨论】:

      【解决方案3】:
      img = Image.open(f"./smoke/first/mistake_cat" + ".png")
      data = np.array(img)
      red, green, blue, alpha = data.T  # Трансформируем матрицу и распаковываем
      img_red = Image.fromarray(red)
      img_green = Image.fromarray(green)
      img_blue = Image.fromarray(blue)
      img_alpha = Image.fromarray(alpha)
      

      【讨论】:

        猜你喜欢
        • 2011-04-24
        • 1970-01-01
        • 1970-01-01
        • 2017-03-13
        • 2020-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多