我正在尝试将树莓派相机拍摄的图片发送到Flask Web服务器。当我对图像进行Base64编码时,似乎无法生成有效的图像。
我可以拍摄照片并通过opencv进行处理。 Base64编码的图像传递到网页,但发送的字符串不是有效的图像。为了证明这一点,我保存了图像并使用在线的Base64转换器进行处理。将此字符串粘贴到网页中会显示图像。
我可以拍摄照片并通过opencv进行处理。 Base64编码的图像传递到网页,但发送的字符串不是有效的图像。为了证明这一点,我保存了图像并使用在线的Base64转换器进行处理。将此字符串粘贴到网页中会显示图像。
def Take_Picture(camera):
stream = io.BytesIO() # saving the picture to an in-program stream
camera.resolution = (160,120) # set resolution
camera.capture(stream, format='jpeg', use_video_port=True) # capture into stream
mydata = np.fromstring(stream.getvalue(), dtype=np.uint8) # convert image into numpy array
img = cv2.imdecode(mydata, -1) # to opencv image
data = base64.b64encode(img).decode('utf-8')
print(data)
cv2.imwrite("test.jpg",img)
return data
HTML
<img src="data:image/jpeg;charset=utf-8;base64,{{img}}" alt="Camera View" width="640" height="480">
我从上面的数据中得到以下结果:
b'AAIAAAIAAAIAAAIAAAIAAAIAAAIAAAIAAAIAAAIAAAIAAAMAAAIAAAIAAA...
但是我从在线Base64转换中得到了以下结果:
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUG...
使用这个字符串在网页上显示了图片。