将字符串转换为numpy.ndarray python

时间:2019-12-18 08:59:00

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

我正在从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:字符串大小必须是元素大小的倍数

1 个答案:

答案 0 :(得分: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.]])