下面我来详细讲解一下 Python 实现 OpenCV 所使用的图片格式与 base64 转换的完整攻略。
1. 将图片转成base64格式的字符串
首先,我们需要将图片转成 base64 格式的字符串。这可以通过使用 Python 的 base64 模块以及 OpenCV 库来实现。代码如下:
import cv2
import base64
# Read image
img = cv2.imread('path/to/image.png')
# Convert image to base64 string
ret, buffer = cv2.imencode('.png', img)
img_base64 = base64.b64encode(buffer).decode('utf-8')
这里,我们首先使用 OpenCV 库中的 imread
函数读取了图片文件,并将其存储到变量 img
中。接着,我们使用 imencode
函数将图片转换为 PNG 格式的二进制数据,并将其存储到变量 buffer
中。最后,我们再使用 Python 自带的 base64
模块将二进制数据编码为 base64 格式的字符串,并将其存储到变量 img_base64
中。
2. 将base64格式的字符串转成图片
接下来,我们需要将 base64 格式的字符串转换成图片。这可以通过使用 Python 的 base64 模块以及 OpenCV 库来实现。代码如下:
import cv2
import base64
import numpy as np
# Decode base64 string to image
img_base64 = 'base64_string_here'
img_binary = base64.b64decode(img_base64)
img = cv2.imdecode(np.fromstring(img_binary, dtype=np.uint8), cv2.IMREAD_COLOR)
# Save image
cv2.imwrite('path/to/output/image.png', img)
这里,我们首先将之前生成的 base64 格式的字符串存储在 img_base64
变量中。接着,我们使用 Python 自带的 base64
模块将其解码为二进制数据,并将其存储在变量 img_binary
中。接下来,我们使用 OpenCV 库中的 imdecode
函数将二进制数据解码为一张图片,并将其存储在变量 img
中。最后,我们可以使用 imwrite
函数将图片保存到本地。
示例
现在,我们来看一下具体的示例:
示例1:将图片转成base64格式的字符串
我们在代码中读取一张名为 example.png
的图片并将其转换为 base64 格式的字符串。代码如下:
import cv2
import base64
# Read image
img = cv2.imread('example.png')
# Convert image to base64 string
ret, buffer = cv2.imencode('.png', img)
img_base64 = base64.b64encode(buffer).decode('utf-8')
# Print base64 string
print(img_base64)
输出结果如下:
iVBORw0KGgoAAAANSUhEUgAAA8AAAAKQAIAAAANniYqAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5wQBFjYJtwjbGQAAAp9JREFUaN7t3QmIXNkhxb/HnnjKa0QWMozihXJ/jxzBU4SHIbjz9AJiJmwlZ7WIgonLXsgyQ3cNTLJIzrNt57O4DU22REmjKvf58U9ujVxSukJ92JnpmQvRVu3kLGCMEwFjHNFVQo1hxzCvKMq8MSfT9col1gXzqsLEDd1kJVESNC31ymxTVUoXztMAqDLq9lj8UnDT1UWQ92OEcyEosWBqW4oDxxyWh5ExdMO43W4yM2V0vupZ6nLjj0b7A5qM5M1cq77AVYNnfyJc6vJeWBrdqXJWvWaVjB6gjPPNQklBGRcy2QkLp5LA38lzWSJdZcUhTJGLc+RGQ97XK7qEapVJYKRMlYK80sRKJkg033yo5gpq7sd7cq2ZiaHWH4m68Qm7flz+DMZ+Rrn3lu/P+KT3ZmH8RGGJmwkZ+IiU6P0yHL3y2pJZmopU8kgMCd2q0z7zNnDcqNcvHSohqg22qhh8GmD8z7k1QKlRLM1Q+ZxNtdOeyrytLh3OXqGk3jkdognxqsxFETVA5XG+CBmLSUzh2Dhh0t0ZOUBRyAC9PPFoGzTpY2eX2sSEKonsuQmKuK89ME1DO9wgB87hPMMQtmrBJRLE/Rn+2bmR2dl1Swf0GSpwDQCBE+GWcFr1orVeRC6eYh7UOjzOjQ5QcQLUD0mnLliLir8kIGRoQet2Ot4cwn+KHwwAGXxQCxdM7Dbi+PKF4bV58KnmMNyGsA/WypT/mQ8DfuL3DAZ9gpM/pLo0DPsJ0Fea3quCfXKJcTVU7kofY8E1qlF6HL7OXS0VS5dUVfQ9hneb/6yChmwVPqNQwDF/ifTaliX6KbUIkcuw1vM3ZuGh2We++0vMaWq9EdyMAAAAASUVORK5CYII=
示例2:将base64格式的字符串转成图片
我们将之前生成的 base64 格式的字符串解码成一张图片并保存到本地。代码如下:
import cv2
import base64
import numpy as np
# Decode base64 string to image
img_base64 = 'base64_string_here'
img_binary = base64.b64decode(img_base64)
img = cv2.imdecode(np.fromstring(img_binary, dtype=np.uint8), cv2.IMREAD_COLOR)
# Save image
cv2.imwrite('example_output.png', img)
这里,我们先将 img_base64
替换成之前示例1生成的 base64 格式的字符串。执行后,输出结果是将图片解码并保存到 example_output.png
文件中。