cv2.imdecode总是返回None

时间:2015-08-31 13:50:58

标签: python sqlite opencv numpy

我正在从存储JPEG图像的sqlite BLOB中读取二进制数据[sqlite3.Binary]。使用

将图像写入DB
img = cv2.imread("images\\image.jpg")
c.execute('INSERT INTO pictures (serial_no, image, height, width) VALUES(?, ?, ?, ?)',
          (serial_no, sqlite3.Binary(img), img.shape[0], img.shape[1]))

尝试按如下方式恢复图像:

conn = sqlite3.connect(dbname)
c = conn.cursor()
c.execute('SELECT image, height, width FROM pictures WHERE serial_no=?', (serial_no, ))
raw, height, width = c.fetchone()
raw_str = StringIO.StringIO(raw)
arr = np.asarray(bytearray(raw_str.read()), dtype=np.uint8)
img = cv2.imdecode(arr, cv2.IMREAD_COLOR)

最后一步总是失败,imdecode返回无。

然而,工作是numpy.reshape:

image = arr.copy().reshape((height, width, 3))

我已经使用OpenCV 3.0.0和OpenCV 2.4.11进行了测试,两者都产生了相同但不令人满意的结果。

我错过了什么?

0 个答案:

没有答案