繁体   English   中英

使用OpenCV对从IP摄像机接收到的流进行有效的运动检测

[英]Effective motion detection with OpenCV with stream received from IP Camera

我有两个问题,我一个多星期都在努力寻找答案。

我正在Visual C ++ 2017上编写Windows服务,该服务连接到我们网络上的Axis IP摄像机并使用常规套接字查询MJPEG流。 它成功解析了流并解码了JPEG图像。 使用OpenCV进行解码; frame = cv :: imdecode(data,IMREAD_GRAYSCALE))。

Q1。 尽管OpenCV声称使用了性能JPEG库:build-libjpeg-turbo(版本1.5.3-62),但解码性能却比.Net的System.Drawing.Image.FromStream(ms)慢得多。 您对真正快速的JPEG解压缩有什么建议吗?

Q2。 我需要对接收的JPEG进行的所有操作就是检查“感兴趣区域”是否存在运动。 这些实际上是工厂的生产线。 该工厂每周工作24天24天,因此照明条件会不断变化。 有时根本没有光,因此JPEG上会有很多杂音。 您建议将哪些OpenCV操作和算法应用于框架,以了解ROI是否有运动? 当然,您可以一次又一次地对矩阵进行大量操作,但是我需要最短,最有效的方法来保持较低的资源需求,因为它将同时对大量摄像机和ROI进行此操作。

我的系统装有NVIDIA显卡(我可以使用CUDA),Intel i7-7700、16GB Ram。

谢谢!

这并不完全是您问题的答案,但它甚至可能是更好的方法。

长期以来,Axis IP摄像机都具有板载运动检测引擎,无法通过摄像机Web UI对其进行配置(在旧的摄像机型号/固件版本上,可能需要使用Internet Explorer和使用嵌入式ActiveX控件来进行配置)并通过VAPIX Axis HTTP相机API。

相同的VAPIX HTTP API还具有用于接收摄像机上每个已配置的运动区域/窗口的运动级别和阈值的命令。

如果您没有支持VAPIX版本3的最新模型,则仍然可以依赖VAPIX版本2,可以尝试发出HTTP GET请求,例如:

http:///axis-cgi/motion/motiondata.cgi?group = 0,1

获得运动级别和阈值数据的HTTP多部分流(即运动区域0和1)。

有关更多详细信息,您可以从Axis网站下载相关的VAPIX PDF文档(可能需要一个帐户并登录)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM