【发布时间】: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 的做法。
谁能指出我正确的方向?计算机视觉和图像处理不是我的强项,所以我一直在努力完成这样的事情。
【问题讨论】: