gpt4 book ai didi

python - 展平 OpenCV/Numpy 数组

转载 作者:太空狗 更新时间:2023-10-29 23:55:47 26 4
gpt4 key购买 nike

我已经使用 PIL/OpenCV 加载了 RGB 图像,我想将其所有 channel 转换为单个 1x(3*width*height) 序列,以便将其提供给 ANN。我发现我可以简单地做:

rlist = []
glist = []
blist = []
for i in xrange(im.width):
for j in xrange(im.height):
r,g,b = im[i,j]
rlist.append(r)
glist.append(g)
blist.append(b)
img_vec = rlist + blist + glist

但显然这是非常低效的。是否有一些内部 OpenCV/numpy 例程的更快方法?

最佳答案

举个简单的例子:

import Image
import numpy as np

im = Image.open('temp.png')
data = np.array(im)
flattened = data.flatten()

print data.shape
print flattened.shape

这会产生:

(612, 812, 4)
(1987776,)

或者,您可以调用 data.reshape(-1),而不是调用 data.flatten()-1 用作“找出给定维度应该是什么”的占位符。

请注意,这将产生一个向量(flattened)r0, g0, b0, r1, g1, b1, ... rn, gn, bn,而你想要一个 r0, r1 ... rn, b0, b1, ... bn, g0, g1, ... gn 的向量。

要得到你想要的,只需调用

flattened = data.T.flatten()

相反。

关于python - 展平 OpenCV/Numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7755684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com