c++人脸特征提取,
shapes.push_back(sp(img, dets[0])); //画人脸轮廓,68点
if (!shapes.empty()) {
for (int j = 0; j < 68; j++) {
circle(I, cvPoint(shapes[0].part(j).x(), shapes[0].part(j).y()), 3, cv::Scalar(255, 0, 0), -1);
}
}
dlib::cv_image<rgb_pixel> dlib_img(I);//dlib<-opencv
cv::Mat tmat = dlib::toMat(dlib_img);
QImage r_image = cvMat2QImage(tmat);//图片转换
emit sendImage(r_image);
if(0){
std::vector<matrix<rgb_pixel>> faces;//定义存放截取人脸数据组
auto shape = sp(img, dets[0]);
matrix<rgb_pixel> face_chip;
extract_image_chip(img, get_face_chip_details(shape, 150, 0.25), face_chip);//截取人脸部分,并将大小调为150*150
faces.push_back(move(face_chip));
//image_window win1(img); //显示原图