我的机器上安装了QT 5.1.1,但是我遇到了一些麻烦。我正在尝试运行以下需要QT的简单程序:
//Playing Video
#include "cv.h"
#include "opencv2\objdetect\objdetect.hpp"
#include "opencv2\core\core.hpp"
#include "opencv2\highgui\highgui.hpp"
#include "opencv2\features2d\features2d.hpp"
#include "opencv2\calib3d\calib3d.hpp"
#include "opencv2\nonfree\nonfree.hpp"
#include "highgui.h"
#include <openbr\openbr_plugin.h>
using namespace cv;
static void printTemplate(const br::Template &t)
{
const QPoint firstEye = t.file.get<QPoint>("Affine_0");
const QPoint secondEye = t.file.get<QPoint>("Affine_1");
printf("%s eyes: (%d, %d) (%d, %d)\n", qPrintable(t.file.fileName()), firstEye.x(), firstEye.y(), secondEye.x(), secondEye.y());
}
int main(int argc, char *argv[])
{
br::Context::initialize(argc, argv);
// Retrieve classes for enrolling and comparing templates using the FaceRecognition algorithm
QSharedPointer<br::Transform> transform = br::Transform::fromAlgorithm("FaceRecognition");
QSharedPointer<br::Distance> distance = br::Distance::fromAlgorithm("FaceRecognition");
// Initialize templates
br::Template queryA("../data/MEDS/img/S354-01-t10_01.jpg");
br::Template queryB("../data/MEDS/img/S382-08-t10_01.jpg");
br::Template target("../data/MEDS/img/S354-02-t10_01.jpg");
// Enroll templates
queryA >> *transform;
queryB >> *transform;
target >> *transform;
printTemplate(queryA);
printTemplate(queryB);
printTemplate(target);
// Compare templates
float comparisonA = distance->compare(target, queryA);
float comparisonB = distance->compare(target, queryB);
// Scores range from 0 to 1 and represent match probability
printf("Genuine match score: %.3f\n", comparisonA);
printf("Impostor match score: %.3f\n", comparisonB);
br::Context::finalize();
return 0;
}
它还需要OpenCV 2.4.6.1和OpenBR,但这不是问题。
上述代码中与QT相关的所有定义(变量和函数)都是未定义的。我试图在QT文件夹中找到相关的h文件并包含它们,但是这没有成功,因为我无法使用qtcore.h(但是一个名为qtcore的不同文件包含了很多包含我现在不用的文件使用)。我试图在项目属性中的“其他包含目录”下添加QT“include”目录,但这也不起作用。我还尝试在“其他库目录”下添加QT“lib”文件夹,但这也没有用。
基本上,我尝试了我能想到的一切。有人可以解释一下我如何使用这些QT定义吗?我真的被困住了,我可以使用任何帮助。
谢谢, 吉尔。
答案 0 :(得分:1)
(可选)更新至Qt 5.2。
启动Qt Creator。
创建一个新的Qt Widgets应用程序项目。你可以给类/文件随机命名,没关系。取消选中“生成表单”选项,因为您不需要任何表单。
从项目中删除main.cpp以外的所有文件。您可以通过在左侧的项目树中右键单击它们并选择“删除文件”来执行此操作。
将代码复制粘贴到主cpp中。确保完全替换main.cpp的内容,默认内容不应再存在。
将opencv库添加到项目中。右键单击项目的根目录,选择“添加库”,然后从那里开始。
右键单击项目根目录并选择“运行qmake”重新运行qmake。
按Ctrl-R(Mac上为Cmd-R)构建并运行项目。
答案 1 :(得分:-1)
Qt使用(非标准)自定义工具链,必须在编译Qt相关代码之前运行。我从来没有尝试过在QtCreator之外使用Qt,但如果你真的需要Qt,我建议你使用QtCreator IDE;如果你当然没有使用它的话。这是一个非常不错的IDE,即使对于非Qt项目也是如此。
另外,如果您还没有这样做,请确保已安装Qt SDK;单靠标题是不够的。 QtCreator本身也不够,你需要SDK。如果你不喜欢这样做,我的建议是看看Poco。它不是Qt的1:1替代品,但它是一个非常成熟的框架。