Python中OpenCV直接读取bytearray图片

Python中OpenCV直接读取bytearray图片

背景

使用pyodbc从数据库表直接读取了一个图片字段(获取到的类型是bytearray),并用OpenCV做些简单处理,不想走已知的“另存为图片文件再用OpenCV打开”的曲折路线。

尝试

上网搜了下OpenCV直接读取内存对象的方法,未找到相关方法;
看了下cv2.imread()返回的类型是numpy.ndarray,又搜了下bytearray转numpy.ndarray的方法,找到了numpy.array()方法,直接用返回值cv2.imshow(),发现显示的不是我们要的结果(一条长长的马赛克)。

大功告成

然后又是一通搜索,无意间翻到OpenCV读取图片道顺序是BGR而非RGB(敲黑板,对OpenCV的了解太少了),于是想到应该要有对应的转换函数,找到了cv2.imdecode(),大功告成!

上代码:

import cv2
import numpy

...
# row 是从数据库读到的记录
imga = numpy.array(row[0])
img = cv2.imdecode(imga, cv2.COLOR_RGBA2BGR)
cv2.imshow("Haha", img)

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值