【问题标题】:Convert string into numpy.ndarray python [closed]将字符串转换为 numpy.ndarray python [关闭]
【发布时间】:2020-04-10 19:11:46
【问题描述】:

我从 opencv 获得一个类型为 numpy.ndarray 的帧,现在我想将此帧转换为字符串,然后再次将其转换回具有相同数据类型的 numpy.ndarray。 我有 str(frame),现在的问题是当将 str(frame) 转换为 numpy 时会抛出错误。

ret, frame = cap.read() # getting a frame
images = np.fromstring(str(frame),dtype=float,sep="")

但我收到错误ValueError:字符串大小必须是元素大小的倍数

【问题讨论】:

  • 请提供输入数据 (frame) 以澄清问题。
  • frame 的类型是 和 dtype 是 uint8,我从 opencv 得到,我想把它转换成字符串,然后再回到这个类型和 dtype
  • 这只是有点帮助。您需要提供frame 的工作示例
  • str(array) 是为了给人类一个总结,而不是像这样的往返。重读fromstring docs。

标签: python python-3.x numpy opencv numpy-ndarray


【解决方案1】:

你可以试试下面的

>>> data
array([[ 79, 203, 231, 106,  17],
       [ 38, 114,  21, 251, 187],
       [222, 145,  59, 158, 211],
       [133, 150, 172,   5,  84],
       [166, 181, 171, 152, 197]])

转换为字符串

>>> data_str = ' '.join(map(str, data.ravel().tolist()))
>>> np.fromstring(data_str, sep=' ')
array([ 79., 203., 231., 106.,  17.,  38., 114.,  21., 251., 187., 222.,
       145.,  59., 158., 211., 133., 150., 172.,   5.,  84., 166., 181.,
       171., 152., 197.])

转回numpy数组

>>> data_shape = data.shape
>>> np.fromstring(data_str, sep=' ').reshape(data_shape)
array([[ 79., 203., 231., 106.,  17.],
       [ 38., 114.,  21., 251., 187.],
       [222., 145.,  59., 158., 211.],
       [133., 150., 172.,   5.,  84.],
       [166., 181., 171., 152., 197.]])

【讨论】:

    猜你喜欢
    • 2017-11-27
    • 2019-08-31
    • 2015-07-21
    • 2013-11-21
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 2015-03-20
    相关资源
    最近更新 更多