C++ 如何使用从sqlite数据库检索的blob图像
我希望有人能帮助我解决这个问题,因为我是opencv和sqlite数据库的新手。关于如何使用sqlite数据库中的blob图像使用模板匹配识别人脸的代码,我遇到了问题。我已使用blob-from mat image成功地将图像存储到数据库中:C++ 如何使用从sqlite数据库检索的blob图像,c++,qt,sqlite,opencv,blob,C++,Qt,Sqlite,Opencv,Blob,我希望有人能帮助我解决这个问题,因为我是opencv和sqlite数据库的新手。关于如何使用sqlite数据库中的blob图像使用模板匹配识别人脸的代码,我遇到了问题。我已使用blob-from mat image成功地将图像存储到数据库中: QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"), "C://Users//yana//Desktop//Detected Faces//",tr("Image
QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"), "C://Users//yana//Desktop//Detected Faces//",tr("Image Files (*.png *.jpg *.jpeg *.bmp)"));
tpl = cv::imread(fileName.toLatin1().data());
QImage TImg(fileName);
// load image to bytearray
QFile f(fileName);
if(f.open(QIODevice::ReadOnly))
{
ba = f.readAll();
f.close();
}
QSqlQuery qry;
qry.prepare("SELECT TImg FROM TemplateInfo WHERE FaceID='"+Faceid+"'");
qry.exec();
qry.next();
QByteArray ba1 = qry.value(5).toByteArray();
QImage img = QImage();
img.loadFromData(ba1);
tpl= cv::Mat(img.height(), img.width(), CV_LOAD_IMAGE_GRAYSCALE, (uchar*)img.bits(), img.bytesPerLine());
问题就从这里开始。所以为了识别人脸,我使用了cv mat image-cv::mat tpl
。我从数据库中检索图像并将其转换为mat图像,但它不起作用。当我进行人脸识别时,程序突然崩溃并出错
OpenCV Error: Assertion failed ((img.depth() == CV_8U || img.depth() == CV_32F) && img.type() == templ.type()) in cv::matchTemplate
这是我从数据库检索blob图像并将其转换为mat图像的代码:
QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"), "C://Users//yana//Desktop//Detected Faces//",tr("Image Files (*.png *.jpg *.jpeg *.bmp)"));
tpl = cv::imread(fileName.toLatin1().data());
QImage TImg(fileName);
// load image to bytearray
QFile f(fileName);
if(f.open(QIODevice::ReadOnly))
{
ba = f.readAll();
f.close();
}
QSqlQuery qry;
qry.prepare("SELECT TImg FROM TemplateInfo WHERE FaceID='"+Faceid+"'");
qry.exec();
qry.next();
QByteArray ba1 = qry.value(5).toByteArray();
QImage img = QImage();
img.loadFromData(ba1);
tpl= cv::Mat(img.height(), img.width(), CV_LOAD_IMAGE_GRAYSCALE, (uchar*)img.bits(), img.bytesPerLine());
有谁能帮我解决如何从sqlite读取斑点图像并将其转换为mat以进一步进行人脸识别的问题吗(谢谢。如果您不使用数据库,而是将文件保存/加载到磁盘上,您的人脸识别代码是否有效?qry.value(5)-5似乎不正确,因为您在select语句中只有一个字段。这几乎是的副本。希望答案就是您想要的。让我们知道。@MichaelVencent是的,Michael。我的人脸识别工作非常完美,只有在我选择模板图像并同时进行识别阶段的情况下。如果我关闭然后,程序重新启动,只需输入FaceID,它就不起作用了。从数据库检索blob数据并将其用作模板时仍有错误,我不知道如何解决。请帮助我:(@KubaOber谢谢你的帮助。我已经回答了重复的问题并试图更改代码。但仍然不起作用。:(我只是想问,如果我在firefox加载项上使用sqlite管理器,我还需要使用.dump吗?