在OpenCV C++中寻找人物轮廓

map*_*lan 12 opencv object-detection image-segmentation

我想在照片中提取人物的轮廓并删除背景.照片可以拍摄全身,只有上半身或仅下半身.

到目前为止我所做的是使用Haar Cascades追踪脸部,但我使用的算法在脸上做了一个矩形,我需要整个身体的形状.我也尝试了HOG,但它也给了我一个矩形,它不适用于所有照片.

如果有人可以帮助我会很棒.我正在使用OpenCV和C++.

Sam*_*Sam 7

您可以尝试GrabCut或GraphCut算法(至少在OpenCV中存在抓取).

你告诉他们矩形(身体所在的位置),他们尽力切割内部的物体.它并不快,也不完美,但你会很难找到更好的东西.

这是一个开放的研究领域,所以如果您的图像没有按照您的需要进行剪切,请准备好自己多年的博士后研究,以找到更好的算法:)

  • 仅仅为了完整性,GraphCut不是一个silhouete检测,而是一个背景分割算法.它不是训练计算机来找人,而是非常困难,它使用背景信息来提取前景.它不是设计用于将前景分类为人或任何其他对象,但如果您保证前景是输入数据中的某个人,则您已经检测到它是silhouete. (3认同)