用 opencv和numpy进行图片和字符串互转,并保存至 json

用 opencv和numpy进行图片和字符串互转,并保存至 json

转至 https://zhuanlan.zhihu.com/p/27349847

受 用 base64 进行图片和字符串互转,并保存至 json 作者启发,试了试使用opencv来读取图片,然后用numpy转为list,再转为json格式。 发现完全可行。

图片转成列表,并保存至 json

我们将一张图片通过opencv来读取,转换为numpy的矩阵。再转为list,存入字典,转为json文件即可。

 

 1 # coding: utf-8
 2 # 导入相关库
 3 import cv2
 4 import numpy as np
 5 from json import dumps
 6 # 要编码的图片文件  
 7 IMAGE_NAME = '1.png'
 8 # 保存为的json文件
 9 JSON_NAME = 'opencv_temp.json'
10 
11 # 通过opencv读取图片
12 img = cv2.imread(IMAGE_NAME)
13 # numpy中ndarray文件转为list
14 img_list = img.tolist()
15 
16 # 字典形式保存数组
17 img_dict = {}
18 img_dict['name'] = IMAGE_NAME
19 img_dict['content'] = img_list
20 
21 # 保存为json格式
22 json_data = dumps(img_dict, indent=2)
23 # 将数据保存到文件
24 with open(JSON_NAME, 'w') as json_file:
25     json_file.write(json_data)
26 
27 从 json 读取字符串,并转换成图片
28 # coding: utf-8
29 import cv2
30 import numpy as np
31 import json
32 
33 # 要读取的JSON格式文件
34 JSON_NAME = 'opencv_temp.json'
35 # 还原为图片文件
36 IMAGE_NAME = 'restore.png'
37 
38 # 读取文件为字典
39 with open(JSON_NAME, "rb") as json_file:
40     img_dict = json.load(json_file)
41 
42 # 获取字典中内容,转为list
43 img_list = img_dict['content']
44 # list转numpy
45 img = np.asarray(img_list)
46 # 还原图片
47 cv2.imwrite(IMAGE_NAME,img)

 

posted @ 2017-12-28 18:12  ayew  阅读(4701)  评论(0编辑  收藏  举报