Opencv 我可以使用approxPolyDP改进人员检测吗?
我可以使用Opencv 我可以使用approxPolyDP改进人员检测吗?,opencv,background-subtraction,Opencv,Background Subtraction,我可以使用approxPolyDP改进人员检测吗 我正在尝试使用BackgroundSubtractorMOG2检测人们。因此,在我接收到图像前景后,我使用此函数获得图像的所有轮廓: Imgproc.findContours(contourImg, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_NONE); 我迭代轮廓变量的每个元素,如果轮廓有一个指定的轮廓区域=>它就是一个人 我的问题是,我是否可以使用app
approxPolyDP
改进人员检测吗
我正在尝试使用BackgroundSubtractorMOG2
检测人们。因此,在我接收到图像前景后,我使用此函数获得图像的所有轮廓:
Imgproc.findContours(contourImg, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_NONE);
我迭代轮廓变量的每个元素,如果轮廓有一个指定的轮廓区域
=>它就是一个人
我的问题是,我是否可以使用approxPolyDP
更好地检测出人的形状
可能吗?如果是,你能告诉我怎么做吗
在找到counturs之前,我已经使用了CLOSE
形态学
操作
我的问题是,我是否可以使用approxPolyDP
更好地检测出人的形状
虽然“更好”有点含糊不清,但您可以通过使用该方法改进分类。从中我们可以看到:
函数approxPolyDP
使用另一条顶点较少的曲线/多边形近似曲线或多边形,以便它们之间的距离小于或等于指定的精度
“精度”指的是epsilon
参数,表示“原始曲线与其近似值之间的最大距离”(也来自文档)。它基本上是从弧长获得的精度参数(轮廓越低,精度越高)
从中我们可以看出,实现这一目标的方法是:
epsilon = 0.1*cv2.arcLength(contour,True)
approx = cv2.approxPolyDP(contour,epsilon,True)
从而更好地逼近轮廓。在该教程的示例中,它们使用1%的弧长获得最佳轮廓,尽管您应该根据具体情况仔细选择此百分比
通过使用这些程序,您肯定会在轮廓区域上获得更高的精度,这将更好地使您能够从具有相似区域的其他对象中正确分类人员。您还必须相应地修改分类标准(>=some_区域),以便正确区分人员对象和非人员对象,因为您有了更精确的区域 你为什么不试试呢?看看你能不能得到更好的结果?我不知道如何实施。我从来没用过。你能帮忙吗?Java代码会很棒。为什么你怀疑
approxPolyDP
会帮你?通常情况下,当使用该方法时,您将获得更适合对象的轮廓(即没有许多周围区域)。因此,轮廓上的面积将减少,因此您可能需要编辑=
标准OK。谢谢你帮我解决这个问题。我还有一个问题,也许你可以在这里回答。是关于背景的。你能告诉我如何设置历史值吗?我看到有人在做:mog2.apply(输入、输出、1/history);你应该提出一个新的问题或对此进行研究,因为这是一个不同的主题,回答评论上的问题是不合适的(对用户来说也是没有用的)。无论如何,如果你愿意的话,我可以根据我的评论为这个问题写一个答案,如果它对你有帮助的话,我可以详细说明。