在opencv通常使用imread读取图片,但是在Qt creator中的资源文件的路径一般为:/xxx/xxx/xxx.png这个路径使用imread是无法读取的,但是可以使用imdecode读取,首先把图片读取到buffer中,然后在用imdecode读取。
QFile file(":/image/images/people2.jpg");
if(!file.open(QFile::ReadOnly))
{
qDebug<<"读取失败";
}else{
QByteArray ba = file.readAll();
Mat img = imdecode(vector<char>(ba.begin(), ba.end()), 1);
}
关于图片路径问题
新建QT 资源qrc文件,然后添加已有文件,这时候路径以qrc的目录为参考,
(“:/source/images/source.jpg”));//images.qrc跟images文件夹为同一路径
""为当前路径,也就是.qrc的文件路径
显示图片到label
QFile target(":/source/images/target.jpg");
if(!target.open(QIODevice::ReadOnly))
{
qDebug("读取失败99999999999");
}else{
QByteArray ba = target.readAll();
target_img = imdecode(vector<char>(ba.begin(), ba.end()), 1);
QImage img = QImage((uchar*)target_img.data,target_img.cols,target_img.rows,target_img.step,QImage::Format_RGB888);
ui->label->setPixmap(QPixmap::fromImage(img));
ui->label->resize(ui->label->pixmap()->size());
}
label显示动态数据
QString show;
start = clock();
cv::Mat H = cv::findHomography(preFeas, points1, cv::RANSAC);
end = clock();
show.setNum(end - start);
ui->label->setText(show);
qt处理时间差问题
#include
QDateTime startTime= QDateTime::currentDateTime();
Sleep(5000);
QDateTime endTime= QDateTime::currentDateTime();
qint64 intervalTime = startTime.secsTo(endTime); //单位秒
qint64 intervalTimeMS = startTime.msecsTo(endTime);//单位毫秒
pro文件中的一些疑问
如pro文件中:INCLUDEPATH += $$PWD/lib/x64-win64
$$PWD
表示的意思就是pro文件所在的目录。