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