在 iOS 上使用 OpenCV 检测人脸边缘/形状

Posted

技术标签:

【中文标题】在 iOS 上使用 OpenCV 检测人脸边缘/形状【英文标题】:Using OpenCV to detect face edges/shape on iOS 【发布时间】:2016-03-07 19:43:38 【问题描述】:

有很多关于如何使用 OpenCV 检测面部矩形的教程,例如:

//Path to the training parameters for frontal face detector
NSString *faceCascadePath = [[NSBundle mainBundle] pathForResource:@"haarcascade_frontalface_alt2"
                                                            ofType:@"xml"];

NSLog(@"%@", faceCascadePath);
const CFIndex CASCADE_NAME_LEN = 2048;
char *CASCADE_NAME = (char *) malloc(CASCADE_NAME_LEN);
CFStringGetFileSystemRepresentation( (CFStringRef)faceCascadePath, CASCADE_NAME, CASCADE_NAME_LEN);

cv::CascadeClassifier faceDetector;
faceDetector.load(CASCADE_NAME);

std::vector<cv::Rect> faceRects;
double scalingFactor = 1.1;
int minNeighbors = 2;
int flags = 0;
cv::Size minimumSize(30, 30);
faceDetector.detectMultiScale(image, faceRects, scalingFactor, minNeighbors, flags, minimumSize);

但是,就像它的 CoreImage 等效项一样,它仅将人脸的边界检测为矩形。我想要的是检测点中的面部边缘,以便我可以围绕用户的面部绘制一条路径,类似于 Snapchat 的做法。

谁能指出我正确的方向?计算机视觉和图像处理不是我的强项,所以我一直在努力完成这样的事情。

【问题讨论】:

【参考方案1】:

查看主动外观模型。 这可能会有所帮助:http://16423.courses.cs.cmu.edu/slides/Lecture_23.pdf

Snapchat 收购了 Looksery 以启用他们的动画镜头。 http://techcrunch.com/2015/09/15/snapchat-looksery/

【讨论】:

以上是关于在 iOS 上使用 OpenCV 检测人脸边缘/形状的主要内容,如果未能解决你的问题,请参考以下文章

opencv的人脸识别基于啥特征

opencv---(腐蚀膨胀边缘检测轮廓检索凸包多边形拟合)

OpenCV猫脸检测实践

基于QT和OpenCV的人脸检测识别系统

OpenCV检测篇——猫脸检测

OpenCV 人脸检测 ROI 断言失败