基於Qt的OpenCV人臉識別(一)
阿新 • • 發佈:2018-12-01
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