Python和raspberry picamera对象计数,多次计数
最近,我一直在做一个项目,使用raspberry pi摄像头OpenCV和Python对经过特定区域的人进行实时计数,因为对于我来说,使用它比处理录制的视频更容易 总体而言,代码可以正常工作,但我在计算部分遇到了一个问题,即: 1-如果一个对象停留在参考线内,它会不断增加计数 2-有时,根据物体的速度,它被计数多次 我不是python方面的专家,可能缺少英语单词来寻找合适的解决方案,所以我想也许有人可以告诉我,在这里解决这个问题最好的方法是什么。为了进行说明,这里是一个gif示例: 即使很难,看起来有多个参照框穿过这条线,当只有一个参照框穿过它时,以及当对象停留在这条线上时,都会发生这种情况 这是检查对象是否正在越过线的代码:Python和raspberry picamera对象计数,多次计数,python,opencv,raspberry-pi,raspberry-pi3,Python,Opencv,Raspberry Pi,Raspberry Pi3,最近,我一直在做一个项目,使用raspberry pi摄像头OpenCV和Python对经过特定区域的人进行实时计数,因为对于我来说,使用它比处理录制的视频更容易 总体而言,代码可以正常工作,但我在计算部分遇到了一个问题,即: 1-如果一个对象停留在参考线内,它会不断增加计数 2-有时,根据物体的速度,它被计数多次 我不是python方面的专家,可能缺少英语单词来寻找合适的解决方案,所以我想也许有人可以告诉我,在这里解决这个问题最好的方法是什么。为了进行说明,这里是一个gif示例: 即使很难,
if (TestaInterseccaoEntrada(CoordenadaYCentroContorno,CoordenadaYLinhaEntrada,CoordenadaYLinhaSaida)):
ContadorEntradas += 1
if (TestaInterseccaoSaida(CoordenadaYCentroContorno,CoordenadaYLinhaEntrada,CoordenadaYLinhaSaida)):
ContadorSaidas += 1
我曾想过在循环中使用某种时间延迟。sleep(x),但这显然不能解决它,而且看起来很糟糕=D
如果需要,我可以在这里发布其余的代码,但它在这里,以保持这里的整洁:
不要介意任何糟糕的语法或错误,一部分不是我的,另一部分看起来很糟糕!XD
提前感谢。很酷的项目!如果不跟踪每一行,那么计算通过每一行的边界框的数量是一个相当大的挑战。如果你想把他们都算进去,那就更糟了 由于这一困难,人们通常更喜欢跟踪物体,然后观察其轨迹,以确定物体是否通过这条线 此链接可以帮助您了解差异。它还提供代码来执行检测(但您已经让该部分工作)和跟踪(您将需要) 其次,最简单的跟踪方法是将具有最高iou的框链接起来。可以在以下位置找到一个良好且简单的实现:
祝你好运 还没有检查代码,但是否可以为每执行一帧添加1?您可能需要区分对象是否停留在此区域中。例如,如果现在有一个对象,而最后一帧没有对象,则只添加1。我明白你的意思,但如果我比较,对象是否在最后一帧,因为程序以20-30fps的速度运行,检查最后1帧可能不会给我相同的结果?在尝试之前先想一想,希望我能理解。我不确定我是否理解正确。很难读。如果我没弄错的话,你会担心我的计划。实现得很好,这大约需要3行代码,您可以很容易地对其进行测试。您只需在if语句(对象检测器)中检查一帧前检测到的对象。如果是这样,就不要算在内。仅当一个样本之前未识别出任何对象时才进行计数。问题可能是在某些帧中未检测到任何内容(尽管存在对象,但存在延迟)。您可以检查最后五帧。我假设在30帧的情况下,5帧内没有物体通过。谢谢你,维克多!github上的这个项目真是太棒了,信息量太大了。我已经坐在这里读了一个小时了哈哈哈!而且,这个项目已经基于阿德里安的作品,但我错过了那一页。。。这肯定会帮助我更好地在这里编写代码。再次感谢你,我一定会把结果发回来。关于边界框,事实上它只是用来标记形状,计数是由它中心的黑点通过线条来完成的。如果这就是你的意思,当然,我可能误解了这一部分。