问题描述
如果您希望它以OpenCV
某种方式使用cv2.split()
,则可以使用,并牢记图像的通道:
b, g, r = cv2.split(image) # For BGR image
b, g, r, a = cv2.split(image) # for BGRA image
或者,如果您喜欢直接的numpy格式,则可以直接使用[根据@igaurav的注释,这似乎更有效]
b, g, r = image[:, :, 0], image[:, :, 1], image[:, :, 2] # For RGB image
b, g, r, a = image[:, :, 0], image[:, :, 1], image[:, :, 2], image[:, :, 3] # for BGRA image
您可以np.shape[2]
用来检查给定图像中的通道数。
解决方法
假设我有一幅具有一定尺寸的图像(1920,1080,3)
,我想将R,G,B值提取到单独的数组中R,G,B
。我尝试这样做
for i in range(image.shape[0]):
for j in range(image.shape[1]):
B = np.append(B,image[i,j][0])
G = np.append(G,j][1])
R = np.append(R,j][2])
但是正如预期的那样,这非常慢,如何在内置函数中使用numpy做到这一点?