微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用numpy将R,G,B值提取到单独的数组中

如何解决如何使用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 举报,一经查实,本站将立刻删除。