如何解决如何使用numpy将R,G,B值提取到单独的数组中
如果您希望它以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做到这一点?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。