有很多关于如何使用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的用户面部周围路径。
有人可以指导我吗?计算机视觉和图像处理不是我的专长,所以我一直在努力开始完成这样的事情。