1. 程式人生 > >基於Qt的OpenCV人臉識別(一)

基於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.csdn.net/download/huhuandk/10820983