我已经加载了一个带有PIL/OpenCV的RGB图像,我想把它的所有通道转换成一个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例程?
举个简单的例子:
这将产生:
或者,您可以调用
data.flatten()
,而不是调用data.reshape(-1)
。-1
用作“找出给定维度应该是什么”的占位符。注意,这将产生一个
flattened
的向量(flattened
),而您需要一个r0, r1 ... rn, b0, b1, ... bn, g0, g1, ... gn
的向量。想得到你想要的,就打电话
相反。
相关问题 更多 >
编程相关推荐