用 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)