【问题标题】:How to extract individual channels from an RGB image如何从 RGB 图像中提取单个通道
【发布时间】:2019-12-15 08:11:27
【问题描述】:

我找到了使用 cv2.split (img) 命令从 RGB 图像中提取单个通道的 opencv 文档,但它并没有真正返回所选通道的图像。它们看起来都像灰度。有人能帮我吗?我附上照片。

b = img[:,:,0]
g = img[:,:,1]
r = img[:,:,2]

or

b,g,r = cv2.split(img)

起始图像 = 红色通道提取 =

这是正确的提取吗? 完整的红色通道 - img 在哪里?

【问题讨论】:

  • 你试过蓝色还是绿色?图片中有很多红色,所以它可能只是显示为灰度
  • 分离通道只是灰度图像。它们通常不包含颜色。您可以通过各种方式为它们着色。请参阅下面的答案。

标签: python image opencv image-processing signal-processing


【解决方案1】:

在任何一种方法中,您都在创建灰度图像,因此绘制它不会显示它所源自的通道的颜色。

您可以使用颜色图为您显示的图像添加颜色,也可以通过将其他通道设置为 0 将其转换为 RGB 图像。

plt.imshow(r, cmap='Reds')

img = np.stack([r, np.zeros_like(r), np.zeros_like(r)], axis=-1)
plt.imshow(img)

【讨论】:

    【解决方案2】:

    提取的红色通道可能看起来像灰度图像,但它是正确的。它只是一个二维数组,其值在[0,255] 范围内。要可视化特定通道,您需要将其他通道设置为零。所以要显示红色通道,需要将蓝色和绿色通道设置为零。

    import cv2
    
    img = cv2.imread('1.jpg')
    
    # Set blue and green channels to 0
    img[:,:,0] = 0
    img[:,:,1] = 0
    
    cv2.imshow('red_img', img)
    cv2.waitKey()
    

    【讨论】:

      猜你喜欢
      • 2019-09-26
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 2015-06-25
      相关资源
      最近更新 更多