pyqt5 将opencv图片存入内置SQLlite数据库,并查询

14 篇文章 0 订阅

创建一个保存图片的信息表

# 初始化数据库
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('user.db')
db.open()
query = QSqlQuery()
# 创建图片信息表
if not query.exec_("create table img(id integer primary key autoincrement,userName TEXT, imgName TEXT,time TEXT,place TEXT,author TEXT,imgType TEXT,imgDesc TEXT,image blob)"):
    print( query.lastError().text())
else:
    print('创建成功')

将opencv图片转换为二进制存入sqllite

# 判断是否存在
 sql_code = "select * from img where imgName='{}'".format(imgName)
 query.exec_(sql_code)
 if query.next():
     QMessageBox.information(self, "提示", "图片已存在!", QMessageBox.Yes)
     return 0
 # 读取数据流
 file=QFile(imagepath)
 file.open(QIODevice.ReadOnly)
 data=file.readAll()
 file.close()
 # 将数据插入数据库
 query.prepare("insert into img (userName,imgName,time,place,author,imgType,imgDesc,image) values(?,?,?,?,?,?,?,?)")
 query.addBindValue(self.username)
 query.addBindValue(imgName)
 query.addBindValue(time)
 query.addBindValue(place)
 query.addBindValue(author)
 query.addBindValue(imgType)
 query.addBindValue(imgDesc)
 query.addBindValue(data)
 # 保存数据
 if not query.exec():
     QMessageBox.warning(self, '提交失败', '请确定不包含特殊字符!'+query.lastError().text(), QMessageBox.Ok)
     return
 QMessageBox.information(self, "提示", "上传成功!", QMessageBox.Yes)

对图像进行查询

sql_code = 'select image from img where userName=="%{}%" and (imgName like "%{}%" or time like "%{}%" or place like "%{}%" or imgDesc like "%{}%" or author like "%{}%" or imgType like "%{}%")'.format(self.username,keyword,keyword,keyword,keyword,keyword,keyword)
query.exec_(sql_code)

if not query.next():
    QMessageBox.information(self, "提示", "没有搜索到相关图片!", QMessageBox.Yes)
    return
# query.next()的起点为第二个
# 加载图片
pic=QPixmap()
pic.loadFromData(bytes(query.value(0)))

W=label[-1].width()
while query.next():
     # 加载图片
     pic=QPixmap()
     pic.loadFromData(bytes(query.value(0)))

     W=label[-1].width()
     # 加载图片
     label[-1].setPixmap(pic.scaledToWidth(W))
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图像处理大大大大大牛啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值