嗨,我正在尝试检测图像中的脖子点。我正在使用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);

最佳答案

经过大量搜索后,我确实找到了找到颈部的更好方法。请注意,它不是100%正确,在个人资料图片中会出错。

我的方法是使用Dlib。尽管OpenCV广泛用于图像处理,但是dlib对图像处理提供了良好的支持,但我更喜欢dlib的是它的简单性。

脚步 :

  • 获取上身haar级联。
  • 收集大约100个上身图像。
  • 使用dlib中提供的工具开始培训。
  • 基本上,您需要按照欧米茄形状标记点,从左到右肩膀开始。

  • 训练后,您将获得编码的dat文件,该文件可用于脖子检测。您将在dlib解决方案中找到所有解决方案和c++实现。

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

    如果需要任何说明,请告诉我。

    07-26 09:36
    查看更多