【发布时间】:2017-08-26 15:46:43
【问题描述】:
我尝试将具有多行的 cv2 图像数组转换为单行一个数组! 这是我的代码:
im =[]
img = cv2.imread('.jpg',0)
for i in img :
im.append(np.array(i))
print (im)
我有这个结果: [数组([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255], dtype=uint8), 数组([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 255 , 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
但我需要一个线阵列: ['0','0','0','255','255','255','255','254','255','255','253','255',' 254'、'255'、'254'、'255'、'254'、'254'、'255'、'255'、'255'、'255'、'255'、'255'、'255' , '255', '253', '253........]
我做错了什么?!也许有一些基本的函数可以从 cv2 数组转换为单个数组?
【问题讨论】:
-
将 numpy-array 添加到带有 append 的列表时,您期望什么?这是基本的python和基本的numpy!我推荐 numpy 文档(array-creation, flatten, ...)。我也想知道你为什么要这样做(因为以后很难处理)。
-
是的,这是一个错误,我的意思是 - “im = np.array”,因为我需要一个线阵列来进行下一次操作!之后我需要二维数组,使用 numpy.array(array, ndmin=2).T
-
您正在附加一个 array,而不是该数组的 values。因此,您的列表
im将由多个numpy数组组成。还有另一种numpy方法只附加值而不是数组:.extend()。所以im.extend(i)会做你所期望的。但是,hstack()的答案要高效得多(不需要在 python 中循环遍历数组),因此您绝对应该这样做。