【问题标题】:python cv2 array to numpypython cv2数组到numpy
【发布时间】: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 中循环遍历数组),因此您绝对应该这样做。

标签: python arrays numpy cv2


【解决方案1】:
newarray = np.hstack(img)
print (newarray) 

【讨论】:

  • 这是完成 OP 想要做的任务的好方法,但是您能否对答案提供更多解释,并可能链接一些文档,以便 OP 可以更好地了解为什么这是首选?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 2012-03-06
  • 2019-07-30
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
相关资源
最近更新 更多