基于opencv的颈部检测

基于opencv的颈部检测,opencv,Opencv,您好,我正在尝试检测图像中的颈部点。我正在使用asm检测面部的特征点,但我不知道如何检测颈部。是否有任何算法或测量方法来检测它 //code ASM asmDetector.GetASMDetectedPoint(7, chin); asmDetector.GetASMDetectedPoint(4, leftCheek); asmDetector.GetASMDetectedPoint(10, rightCheek); //Neck detection float rightNeck

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

在这种情况下,我们可以使用OpenCV检测人脸,然后将点设置到人脸的下部,然后我们可以像检测到颈部一样进行操作

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


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

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

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

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

步骤:

  • 上半身haar cascade
  • 收集大约100张上半身的图像
  • 使用dlib中提供的工具开始培训
  • 基本上,你需要根据欧米茄形状标记点,从左肩到右肩开始
  • 培训后,您将获得可用于颈部检测的编码dat文件。所有解决方案和C++实现,您将在DLIB解决方案中找到。 我用ASM做了同样的训练,但dlib的结果更有希望


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

    我所做的是使用71分训练Dlib模型(68分Dlib+2分用于耳朵,1分用于颈部)


    用你迄今为止尝试过的代码解释……问题中的更新代码请检查与脸颜色相同的东西,紧靠下巴下方。不适用于所有情况。取决于人穿什么……对于领子T恤,它将起作用,但对于其他情况,如女孩头发覆盖颈部。放弃。你无法检测到颈部(没有“特征”,而且它总是被头发/衣服遮挡),你只能从已经获得的数据中推断出来。链接已断开。得到404。