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