用 opencv和numpy进行图片和字符串互转,并保存至 json
受 用 base64 进行图片和字符串互转,并保存至 json 作者启发,试了试使用opencv来读取图片,然后用numpy转为list,再转为json格式。 发现完全可行。
图片转成列表,并保存至 json
我们将一张图片通过opencv来读取,转换为numpy的矩阵。再转为list,存入字典,转为json文件即可。
# coding: utf-8
# 导入相关库
import cv2
import numpy as np
from json import dumps
# 要编码的图片文件
IMAGE_NAME = '1.png'
# 保存为的json文件
JSON_NAME = 'opencv_temp.json'
# 通过opencv读取图片
img = cv2.imread(IMAGE_NAME)
# numpy中ndarray文件转为list
assert img is not None, "image did not read success!"
img_list = img.tolist()
# 字典形式保存数组
img_dict = {}
img_dict['name'] = IMAGE_NAME
img_dict['content'] = img_list
# 保存为json格式
json_data = dumps(img_dict, indent=2)
# 将数据保存到文件
with open(JSON_NAME, 'w') as json_file:
json_file.write(json_data)
从 json 读取字符串,并转换成图片
# coding: utf-8
import cv2
import numpy as np
import json
# 要读取的JSON格式文件
JSON_NAME = 'opencv_temp.json'
# 还原为图片文件
IMAGE_NAME = 'restore.png'
# 读取文件为字典
with open(JSON_NAME, "rb") as json_file:
img_dict = json.load(json_file)