首页 > 解决方案 > OpenCV 处理的图像未显示在使用 base64 编码的 HTML 上

问题描述

我有一个示例场景。我正在使用cap = cv2.VideoCapture(0). 然后我将每个帧转换为字节并将它们发送到 Redis db。

image = cv2.imencode('.jpg', cap)
value = np.array(image).tobytes()
store.set('image', value)

从 Redis,我将字节重建回图像,然后返回到 numpy 数组。

self._video_capture = self._store.get('image')
self.nparr = np.frombuffer(self._video_capture, np.uint8) # convert image into numpy array
self.img_np = cv2.imdecode(self.nparr, cv2.IMREAD_COLOR)

然后,我使用 Tornado(websocket) 将它们与字节流一起发送回来,以显示在 HTML 页面上。

image = cv2.imencode('.jpg', self.frame)
value = np.array(image).tobytes()
value = base64.b64encode(value)
self.write_message(value) #Websocket write function

HTML 页面将数据读取为

data:image/jpg;base64

但是 HTML 页面无法识别 base64 图像数据。'src' 显示为 16x16。这里可能出了什么问题?

编辑:base64 编码图像数据的形式/<string>/<string>/<string>/<string>/<string>/

标签: pythonopencvredisbase64tornado

解决方案


推荐阅读