将seetaFace2导入iOS项目中(人脸识别)
·
std::vector<SeetaFaceInfo> faces = engine.DetectFaces( image_data );
printf("faces:%d",faces.size());
if(faces.size() > 0){
printf("检测到人脸\n");
for( SeetaFaceInfo &face : faces )
{
// Query top 1
printf("face_height:%d\n",face.pos.height);
printf("face_width:%d\n",face.pos.width);
printf("face_X:%d\n",face.pos.x);
printf("face_Y:%d\n",face.pos.y);
cv::rectangle(cvImage, cvRect(face.pos.x, face.pos.y, face.pos.width, face.pos.height), cv::Scalar(220, 20, 60, 10), 3);
CGImageRef sourceImageRef = [image CGImage];
CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, CGRectMake(face.pos.x, face.pos.y, face.pos.width, face.pos.height));
UIImage *newImage = [UIImage imageWithCGImage:newImageRef scale:1 orientation:UIImageOrientationRight];
dispatch_async(dispatch_get_main_queue(), ^{
weakSelf.imageShow.image = newImage;
});
////保存头像数据
[weakSelf loadImageFinished:newImage];
CGImageRelease(sourceImageRef);
// CGImageRelease(newImageRef);
}
dispatch_async(dispatch_get_main_queue(), ^{
UIImage * endImage = MatToUIImage(cvImage);
endImage = [UIImage imageWithCGImage:endImage.CGImage
scale:endImage.scale
orientation:UIImageOrientationRight];
label.text = [NSString stringWithFormat:@"检测到%ld次",count];
});
count++;
printf("检测到人次:%d",count);
cvReleaseImage(&img);
}else{
printf("没有检

1.从opencv官网下载对应的动态库(也可以自己编译);
2.从git..下载seetaFace2的包;
3.导入数据, 参考seetaFace2内部demo;
4. 需要在oc代码中导入c++的内容, 注意修改部分配置;
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)