Sig*_*gma 6 python opencv numpy image
假设我有一个具有某个维度的图像(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, image[i, j][1])
R = np.append(R, image[i, j][2])
Run Code Online (Sandbox Code Playgroud)
但正如预期的那样,这是非常缓慢的,我怎样才能在内置函数中使用numpy?
Zda*_*daR 14
如果你想要它的使用,OpenCV那么你可以使用cv2.split(),记住你的图像的渠道:
b, g, r = cv2.split(image) # For BGR image
b, g, r, a = cv2.split(image) # for BGRA image
Run Code Online (Sandbox Code Playgroud)
或者,如果您可能喜欢直接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
Run Code Online (Sandbox Code Playgroud)
您可以使用np.shape[2]检查给定图像中的通道数.
dsplit 它.
import numpy as np
def channelSplit(image):
return np.dsplit(image,image.shape[-1])
[B,G,R]=channelSplit(image)
Run Code Online (Sandbox Code Playgroud)
这适用于RGB或RGBA图像.