[英]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.