您好我正在尝试检测图像中的颈部点。我正在使用asm来检测脸部的特征点,但我不知道如何检测颈部。是否有任何算法或测量来检测它?
//code ASM asmDetector.GetASMDetectedPoint(7, chin);
asmDetector.GetASMDetectedPoint(4, leftCheek);
asmDetector.GetASMDetectedPoint(10, rightCheek);
//Neck detection
float rightNeckX = rightCheek.x;
float rightNeckY = chin.y + ((chin.y - rightCheek.y) / 2);
float leftNeckX = leftCheek.x;
float leftNeckY = chin.y + ((chin.y - leftCheek.y) / 2);
leftNeck = CPoint2D(leftNeckX, leftNeckY);
rightNeck = CPoint2D(rightNeckX, rightNeckY);
答案 0 :(得分:2)
经过大量的搜索,我确实找到了更好的方法来找到颈部点。请注意,它不是100%正确,并且在配置文件图像中会出错。
我的方法是使用Dlib。虽然OpenCV被广泛用于图像处理,但dlib对图像处理有很好的支持,我更喜欢dlib的简单性。
步骤:
训练结束后,您将获得可用于颈部检测的编码数据文件。您将在dlib解决方案中找到所有解决方案和c ++实现。
我使用ASM进行了相同的训练,但是dlib的结果更有希望。
如果您需要任何澄清,请告诉我。
答案 1 :(得分:0)
在这种情况下,我们可以使用OpenCV检测面部,然后将点设置到面部的下方,然后我们可以在检测到颈部时表现......
很抱歉,但事实上,没有任何其他准确方法可以完美地检测颈部。
如果有人有更好的想法,那么他们是最受欢迎的人。
答案 2 :(得分:0)
您可以将Haar分类器与皮肤检测器结合使用进行面部检测。 然后,您只需要从包含检测到的皮肤表面的整个提取面罩中减去面部。
答案 3 :(得分:0)
我所完成的工作使用71分训练了Dlib模型(Dlib为68分+耳朵为2分,脖子为1分)