下载安装软件
- 下载vs 2017,根据自己所需安装。
- 下载Qt 5.11.1,选择适合自己电脑的版本下载安装,我选的是qt-opensource-windows-x86-msvc2017_64-5.11.1,一路继续即可。
- 下载vsaddin,由于是vs2017,故下载qt-vsaddin-msvc2017-2.2.1.vsix,双击安装即可。
- 下载opencv3.4,下载压缩包解压即可。
配置相关环境
vs2017配置
在Qt Options中点击Add加入Qt安装位置文件中Qt5.11.1文件夹即可。
Qt配置opencv
在新建项目中,找到.pro文件,在其中加入如下代码段,即可为当前项目配置好opencv。其的地址需根据opencv文件夹的地址来做出响应修改。
INCLUDEPATH += C:\project\C++\opencv\build\include
C:\project\C++\opencv\build\include\opencv
C:\project\C++\opencv\build\include\opencv2
INCLUDEPATH += C:\project\C++\opencv\build\include
CONFIG(debug, debug|release): {
LIBS += -LC:\project\C++\opencv\build\x64\vc14\lib \
-lopencv_world330
-lopencv_world330d
} else:CONFIG(release, debug|release): {
LIBS += -LC:\project\C++\opencv\build\x64\vc14\lib \
-lopencv_world330
-lopencv_world330d
示例
下面做一个简单的人脸识别的小程序,并未使用Qt的界面。main.cpp中代码如下。
#include <QCoreApplication>
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/calib3d/calib3d.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat image, image_gray; //定义两个Mat变量,用于存储每一帧的图像
image = imread("C://001//lena.jpg");
imshow("oringin", image);
cvtColor(image, image_gray, CV_BGR2GRAY);//转为灰度图
equalizeHist(image_gray, image_gray);//直方图均衡化,增加对比度方便处理
CascadeClassifier eye_Classifier; //载入分类器
CascadeClassifier face_cascade; //载入分类器
//加载分类训练器,OpenCv官方文档提供的xml文档,可以直接调用
//xml文档路径 opencv\sources\data\haarcascades
if (!eye_Classifier.load("C:\\project\\C++\\opencv\\sources\\data\\haarcascades\\haarcascade_eye.xml")) //需要将xml文档放在自己指定的路径下
{
cout << "Load haarcascade_eye.xml failed!" << endl;
return 0;
}
if (!face_cascade.load("C:\\project\\C++\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml"))
{
cout << "Load haarcascade_frontalface_alt failed!" << endl;
return 0;
}
//vector 是个类模板 需要提供明确的模板实参 vector<Rect>则是个确定的类 模板的实例化
vector<Rect> eyeRect;
vector<Rect> faceRect;
//检测关于眼睛部位位置
eye_Classifier.detectMultiScale(image_gray, eyeRect, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(30, 30));
for (size_t eyeIdx = 0; eyeIdx < eyeRect.size(); eyeIdx++)
{
rectangle(image, eyeRect[eyeIdx], Scalar(0, 0, 255)); //用矩形画出检测到的位置
}
//检测关于脸部位置
face_cascade.detectMultiScale(image_gray, faceRect, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(30, 30));
for (size_t i = 0; i < faceRect.size(); i++)
{
rectangle(image, faceRect[i], Scalar(0, 0, 255)); //用矩形画出检测到的位置
}
imshow("test", image); //显示当前帧
waitKey(0);
return 0;
}
结果如下:
到此便完成了配置环节。