我正在将我的应用程序中的图像保存为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()