IndexError 的 Python 错误:尝试使用 openCV 减去蓝色时数组的索引过多

问题描述

当我尝试使用 openCV 从灰色中减去蓝色通道时,我遇到了 IndexError

import numpy as np
import cv2
img = cv2.imread('Pictures/color2.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('Gray',gray)

gray[:,:,0] = 0
cv2.imshow('Blue Subtracted',gray)

cv2.waitKey(0)
cv2.destroyWindow()

这是我遇到的错误

gray[:,0] = 0
IndexError: too many indices for array

谁能帮我解决这个问题? 我在 PyCharm 社区中使用 Python 3.7

解决方法

gray 是一个没有深度的二维数组,不需要指定通道

temp =  img[0,:,:] - gray

此外,您应该注意 cv2.imread 读取为 BGR,而不是 RGB,因此蓝色通道是第一个通道