将narray数组转为图像base64格式

2 篇文章 0 订阅
1 篇文章 0 订阅

将narray数组转为图像base64格式

想要效果

将narray格式的图像三维数组转为base64格式进行传递

例如:
narray在plt.imshow()下的效果
在这里插入图片描述
目的是得到里面这幅图的base64编码(不含坐标轴)

opencv可以将narray转为二级制编码的图像格式,再进行base64转码

# image_array为图像样式的三维数组,image_array.shape=(121,170,3)
retval, buffer = cv2.imencode('.jpg', image_array)
pic_str = base64.b64encode(buffer)
pic_str = pic_str.decode()

实际效果

为了验证pic_str是否正确,把pic_str转码回图片,得到效果如下
在这里插入图片描述
这里有个坑,图片内容基本对了,但是颜色明显有问题,不是想要的效果

原因排查

进行原因排查,锁定问题是在数组转图像格式过程产生的

retval, buffer = cv2.imencode('.jpg', image_array)

原来cv2.imencode()方法默认是生成bgr样式图片,但我们需要的是rgb

所以需要将image_array的第三维(代表颜色通道)进行顺序调整

修改如下:

retval, buffer = cv2.imencode('.jpg', image_array[..., ::-11])   # 将数组第三维进行反向排序
pic_str = base64.b64encode(buffer)
pic_str = pic_str.decode()

最终结果

pic_str转码回图片,得到效果如下:
在这里插入图片描述
得到的图片正常,证明pic_str是正确的base64编码格式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值