1目標
OpenCV & C++實現人臉識別
2代碼
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
//訓練文件路徑
//Note:路徑需要用雙右下劃線,即"\\"
string xmlPath = "D:\\Program Files\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_default.xml";
int main(int argc, char** atgv) {
Mat img = imread("face1.jpg");
resize(img, img, Size(500, 500));
imshow("input image", img);
CascadeClassifier detector;
detector.load(xmlPath);
if (!detector.load(xmlPath)) //加載訓練文件
{
cout << "不能加載指定的xml文件" << endl;
return -1;
}
vector<Rect> faces;
detector.detectMultiScale(img, faces, 1.1, 3, 0, Size(30, 30));
for (size_t t = 0; t < faces.size(); t++)
{
rectangle(img, faces[t], Scalar(0, 0, 255), 2, 8);
}
imshow("Result", img);
waitKey(0);
return 0;
}
3OpenCV中既有的訓練結果
OpenCV中自帶訓練結果,加載出來就能使用,不用重新訓練。
string xmlPath = "D:\\Program Files\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_default.xml";
殘留問題
接口還沒細研究,代碼沒細調。