使用opencv检测颈部

时间:2014-09-11 05:56:30

标签: opencv

您好我正在尝试检测图像中的颈部点。我正在使用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); 

4 个答案:

答案 0 :(得分:2)

经过大量的搜索,我确实找到了更好的方法来找到颈部点。请注意,它不是100%正确,并且在配置文件图像中会出错。

我的方法是使用Dlib。虽然OpenCV被广泛用​​于图像处理,但dlib对图像处理有很好的支持,我更喜欢dlib的简单性。

步骤:

  1. 获取Upperbody haar cascade。
  2. 收集大约100张上身图像。
  3. 使用dlib中提供的工具开始培训。
  4. 基本上你需要按照欧米茄的形状标记点,从左到右开始。
  5. 训练结束后,您将获得可用于颈部检测的编码数据文件。您将在dlib解决方案中找到所有解决方案和c ++实现。

    我使用ASM进行了相同的训练,但是dlib的结果更有希望。

    如果您需要任何澄清,请告诉我。

答案 1 :(得分:0)

在这种情况下,我们可以使用OpenCV检测面部,然后将点设置到面部的下方,然后我们可以在检测到颈部时表现......

很抱歉,但事实上,没有任何其他准确方法可以完美地检测颈部。

如果有人有更好的想法,那么他们是最受欢迎的人。

答案 2 :(得分:0)

您可以将Haar分类器与皮肤检测器结合使用进行面部检测。 然后,您只需要从包含检测到的皮肤表面的整个提取面罩中减去面部。

答案 3 :(得分:0)

我所完成的工作使用71分训练了Dlib模型(Dlib为68分+耳朵为2分,脖子为1分)

Demo Video Link