基于Qt的OpenCV人脸识别(一)
OpenCV对图像处理非常专业,具有很多模块。但是其GUI模块(即highgui),交互性非常差,就连按钮也得用滑动条来实现。而Qt这个强大的c++图形库很好的避免了这个缺点,因此笔者基于Qt平台,调用OpenCV库,来进行OpenCV的人脸识别开发。
工欲善其事,必先利其器,要想完成开发,先得在Qt上搭建OpenCV的开发环境,如何编译OpenCV得到动态链接库这里不多说,有很多博客都做了详细说明,这里,笔者使用的是VS2015+OpenCV3.2编译的链接库。为什么使用vs2015平台呢,因为笔者的Qt平台用的是Qt 5.8.0 (MSVC 2015),可以直接调用编译好的链接库,其他的版本也是一样,对应上即可。
建好了一个Qt工程后,笔者这里的工程名为face_reg,打开face_reg.pro这个文件,在在文件的末尾输入如下代码:
INCLUDEPATH += D:\Program\opencv3.2\newbuild\install\include
INCLUDEPATH += D:\Program\opencv3.2\newbuild\install\include\opencv
INCLUDEPATH += D:\Program\opencv3.2\newbuild\install\include\opencv2
LIBS += -LD:\Program\opencv3.2\newbuild\install\x64\vc14\lib -lopencv_aruco320d\
-lopencv_bgsegm320d\
-lopencv_bioinspired320d\
-lopencv_calib3d320d\
-lopencv_ccalib320d\
-lopencv_core320d\
-lopencv_datasets320d\
-lopencv_dnn320d\
-lopencv_dpm320d\
-lopencv_face320d\
-lopencv_features2d320d\
-lopencv_flann320d\
-lopencv_fuzzy320d\
-lopencv_highgui320d\
-lopencv_imgcodecs320d\
-lopencv_imgproc320d\
-lopencv_line_descriptor320d\
-lopencv_ml320d\
-lopencv_objdetect320d\
-lopencv_optflow320d\
-lopencv_phase_unwrapping320d\
-lopencv_photo320d\
-lopencv_plot320d\
-lopencv_reg320d\
-lopencv_rgbd320d\
-lopencv_saliency320d\
-lopencv_shape320d\
-lopencv_stereo320d\
-lopencv_stitching320d\
-lopencv_structured_light320d\
-lopencv_superres320d\
-lopencv_video320d\
-lopencv_videoio320d\
-lkernel32\
-luser32\
-lgdi32\
-lwinspool\
-lcomdlg32\
-ladvapi32\
-lshell32\
-lole32\
-loleaut32\
-luuid\
-lodbc32\
-lodbccp32
在widget.cpp里面输入如下代码:
#include "widget.h"
#include "ui_widget.h"
#include <opencv2/opencv.hpp>
using namespace cv;
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
Mat image = imread("D:\\test.jpg");
cvNamedWindow("window", CV_WINDOW_NORMAL);
imshow("window",image);
}
然后进行编译,运行,如果没有报错,并显示了图片,则配置正确,可以进行自己的开发了。
文末尾附上笔者编译的动态链接库:https://download.****.net/download/huhuandk/10820983