从SQLite3显示图像时出错

时间:2018-01-30 17:50:59

标签: python numpy opencv sqlite blob

我正在将我的应用程序中的图像保存为SQLite3中的BLOB。当我检索时,我想在应用程序中显示它,但我不断得到垫子不是一个numpy数组,也不是标量'。我似乎无法找到一个示例代码,允许您检索图像并显示它(除了在网页上)。

我认为问题是从blob转换为numpy数组,但我无法找到有关如何执行该操作的信息。

我发布了所有三个defs的简短测试程序,但我所说的那个是readImageFromDB

import cv2
import sqlite3

def readImage():

    newimage=cv2.imread('_testImage.jpg',-1) #read as is

    insertImageIntoDB(newimage)


def insertImageIntoDB(newimage):
    db = sqlite3.connect('testImages.dat')
    db.execute('''INSERT INTO images(image) VALUES(?)''', (newimage, ))    
    db.commit()
    db.close()

def readImageFromDB():
    conn=sqlite3.connect("testImages.dat")
    cur=conn.cursor()
    cur.execute("SELECT * FROM images")
    row=cur.fetchone()
    conn.close()

    img = row[1]

    #display on screen
    cv2.imshow('testimg', img)
    k=cv2.waitKey(0) & 0xFF #escape key

    if k == 27:
        cv2.destroyAllWindows() #close windows

    elif k==ord('s'): #save image
        cv2.imwrite('testImage.png', img)
        cv2.destroyAllWindows() #close windows


def createTestImageDatabase():
    # Creates a non-conformance database
    ncdb = sqlite3.connect('testImages.dat')
    ncdb.execute("CREATE TABLE IF NOT EXISTS images (_id INTEGER PRIMARY KEY, image BLOB)")
    ncdb.commit()
    ncdb.close()

#createTestImageDatabase()
#readImage()
readImageFromDB()

0 个答案:

没有答案