如何将字符串表示解析回numpy数组?

时间:2017-09-20 08:19:44

标签: opencv numpy redis

我使用opencv读取图像并将其保存为redis,如下所示:

frame=cv2.imread('/path/to/image.png')
rd.set('frame', frame)

然后,读回一个像这样的字符串表示:

[[[ 38  45  51]
  [ 38  45  51]
  [ 38  45  51]
  ..., 

  [235 217 222]]]
然后我试着像这样回来:

frameString=rd.get('frame')
mat=np.array(frameString)

但是

 print mat.shape

输出

 ()

然后我试了

 mat=eval(frameString)

这给了我错误:

    exec exp in global_vars, local_vars
  File "<console>", line 1, in <module>
  File "<string>", line 1
    [[[ 38  45  51]
             ^
SyntaxError: invalid syntax

问题是

how to convert this string representation back to numpy array correctly?

1 个答案:

答案 0 :(得分:0)

最简单的方法是将其编码为JSON并将其保存到redis。

frame=cv2.imread('/path/to/image.png')
rd.set('frame', json.dumps(frame. tolist()))


frameString=json.loads(rd.get('frame'))
mat=np.array(frameString)

您可以找到更快,更紧凑的序列化格式。