Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 我可以使用approxPolyDP改进人员检测吗?_Opencv_Background Subtraction - Fatal编程技术网

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);你应该提出一个新的问题或对此进行研究,因为这是一个不同的主题,回答评论上的问题是不合适的(对用户来说也是没有用的)。无论如何,如果你愿意的话,我可以根据我的评论为这个问题写一个答案,如果它对你有帮助的话,我可以详细说明。