基于OpenCV實戰(zhàn):動態(tài)物體檢測
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
最近,閉路電視安全系統(tǒng)運行著多種算法來確保安全,例如面部識別,物體檢測,盜竊檢測,火災警報等。我們在運動檢測的基礎上實現了許多算法,因為在空閑幀上運行所有這些進程沒有任何意義。在本文中,我們將討論實現基于運動檢測的視頻保存。
OpenCV:pip install opencv-python# Converting the image to GrayScalegray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)gray = cv2.GaussianBlur(gray,(21,21),0)# Saving the First Frameif first_frame is None:first_frame = graycontinue
然后,我們將后續(xù)幀與保存的第一幀進行比較,以觀察差異。計算完差異后,我們可以應用閾值將其轉換為黑白圖像。
#Calculates difference to detect motiondelta_frame = cv2.absdiff(first_frame, gray)#Applies Threshold and converts it to black & white imagethresh_delta = cv2.threshold(delta_frame, 30, 255, cv2.THRESH_BINARY)[1]thresh_delta = cv2.dilate(thresh_delta, None, iterations=0)#finding contours on the white portion(made by the threshold)cnts,_ = cv2.findContours(thresh_delta.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
最后一個命令在該黑白圖像中查找輪廓,并給出用于創(chuàng)建邊界框的坐標,如上面的視頻所示。使用運動檢測的好處:
它不會保存無用的空閑鏡頭。因此,減少了其他算法的工作量,因為不會保存空閑幀進行處理。
它需要較少的計算,并且適合實時實施。
給定的因素導致輪廓檢測不理想,運動檢測的幼稚方法會在執(zhí)行開始時為所有比較保存第一幀。不好有幾個原因:
白天的照明條件可能會改變。
天氣變化。
執(zhí)行時相機被遮擋。
解決方案:在沒有運動的情況下,可以通過定期定期更新保存的幀來輕松解決此問題。
# Number of idle frames to pass before changing the saved frame# for further comparisionsFRAMES_TO_PERSIST = 1000
然后將其放在while循環(huán)中:
#increment delay counter for every idle framedelay_counter += 1#Update the saved first frameif delay_counter > FRAMES_TO_PERSIST:delay_counter = 0first_frame = next_frame
當檢測到運動時,將delay_counter設置為零,微小的物體(例如蜜蜂和昆蟲)和通常不必要的輕微不必要的運動被存儲起來。解決方案:如片段所示,我們應該在該區(qū)域設置一個閾值。
# Minimum boxed area(in pixels) for a detected motion to count as actual motion# Use to filter out noise or small objectsMIN_SIZE_FOR_MOVEMENT = 2000
然后在while循環(huán)中放置一個if語句:
#Checks if the area is big enough to be considered as motion.if cv2.contourArea(c) > MIN_SIZE_FOR_MOVEMENT:#Your code
所有這些都是針對同一視頻(30-fps,1280x720)計算的。
Raspberry Pi 2:
規(guī)格 1.5 GHz處理器 1 GB內存 沒有GPU FPS:每秒8.08幀
Jetson Nano:
規(guī)格 四核ARM處理器1.43Ghz 2 Gb內存 GPU:128核心Nvidia Maxwell FPS:每秒33幀
個人電腦 :
規(guī)格 i7第八代處理器 16 GB內存 GTX 1060 6 GB GPU FPS:每秒37幀
潛在應用:
智能鈴:
如果有人站在您家門口,它將自動觸發(fā)鈴聲,并向您發(fā)送提示。
潛在威脅警報:
如果有人站在您家門前的時間長于正常時間,它將提醒您。
在本文中,我們實現了一個非常基本但重要的算法,可用于有效運行所有其他算法。可以對該運動檢測算法進行更多修改,以使其更加健壯。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~

