使用OpenCV+Python構(gòu)建運(yùn)動熱圖視頻
OpenCV是一個(gè)強(qiáng)大的圖像和視頻處理庫,在這篇文章中,我將創(chuàng)建一個(gè)運(yùn)動熱圖,用于檢測運(yùn)動、以及物體或人的流動方向,在投影公共區(qū)域時(shí)可以對建筑師有所幫助。
簡介
OpenCV,或(開源計(jì)算機(jī)視覺)是英特爾于1999年開發(fā)的一個(gè)庫,主要提供計(jì)算機(jī)視覺和實(shí)時(shí)視頻的相關(guān)操作,它是用C++編寫的,同時(shí)也支持多種其它語言(包括Python)。工作流程這個(gè)程序是基于一種被稱為高斯背景差法的技術(shù),這項(xiàng)技術(shù)被廣泛應(yīng)用于用穩(wěn)定的攝像機(jī)檢測運(yùn)動物體。背景差法創(chuàng)建一個(gè)表示幀(圖像的靜態(tài)部分)背景的模板,對于每一幀,它將減去前一幀。讓我們對該算法的兩個(gè)主要步驟進(jìn)行一個(gè)簡要概述:背景初始化:在第一步中,通過凍結(jié)第一幀來計(jì)算背景的模型。更新:在第二步中,下一幀將減去上一幀,如果兩幀之間發(fā)生變化(移動),則這些幀的差異將反映出該變化,可以通過應(yīng)用過濾器來進(jìn)行提取差異信息。以下是背景差法應(yīng)用于從城市攝像機(jī)錄制的短視頻的示例:
代碼對于整個(gè)項(xiàng)目存儲庫,在此處可以獲取。https://github.com/robertosannazzaro/motion-h(huán)eatmap-opencv/blob/master/README.md代碼首先讀取輸入的視頻文件并初始化所需的一些變量:capture = cv2.VideoCapture('input.mp4')background_subtractor = cv2.bgsegm.createBackgroundSubtractorMOG()length = int(capture.get(cv2.CAP_PROP_FRAME_COUNT))然后,for循環(huán)遍歷視頻幀:for i in range(0, length):
ret, frame = capture.read()
# If first frame if first_iteration_indicator == 1:
first_frame = copy.deepcopy(frame) height, width = frame.shape[:2] accum_image = np.zeros((height, width), np.uint8)
第一個(gè)if塊檢查該幀是否為視頻的第一幀,這樣做是為了初始化背景差法的背景,然后accum_image使用與該幀大小相對應(yīng)的大小來初始化該數(shù)組。
filter = background_subtractor.a(chǎn)pply(frame) # remove the background
threshold = 2maxValue = 2ret, th1 = cv2.threshold(filter, threshold, maxValue, cv2.THRESH_BINARY)
accum_image = cv2.a(chǎn)dd(accum_image, th1)
color_image_video = cv2.a(chǎn)pplyColorMap(accum_image, cv2.COLORMAP_HOT)
為了消除例如風(fēng),小鳥飛行等少量運(yùn)動,將閾值與maxValue一起應(yīng)用到遮罩上。然后將掩碼的結(jié)果添加到accum_image數(shù)組中,對每個(gè)幀執(zhí)行此操作,結(jié)果由用于存儲視頻中發(fā)生的每個(gè)運(yùn)動的accum_image數(shù)組組成。此外,在最后,當(dāng)已經(jīng)對每個(gè)幀執(zhí)行了先前描述的操作時(shí),顏色映射被應(yīng)用于遮罩并且遮罩與當(dāng)前幀合并。
更進(jìn)一步,可以制作一個(gè)顯示熱圖逐幀衰減的視頻。為了實(shí)現(xiàn)這一點(diǎn),將導(dǎo)出每個(gè)幀,然后再次使用cv2,通過合并所有幀來生成視頻:video = cv2.VideoWriter('output.a(chǎn)vi', fourcc, 30.0, (width, height))for image in images: video.write(cv2.imread(os.path.join(image_folder, image)))
cv2.destroyAllWindows()最后結(jié)果

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個(gè)字
最新活動更多
-
6月20日立即下載>> 【白皮書】精準(zhǔn)測量 安全高效——福祿克光伏行業(yè)解決方案
-
7月3日立即報(bào)名>> 【在線會議】英飛凌新一代智能照明方案賦能綠色建筑與工業(yè)互聯(lián)
-
7月22-29日立即報(bào)名>> 【線下論壇】第三屆安富利汽車生態(tài)圈峰會
-
7.30-8.1火熱報(bào)名中>> 全數(shù)會2025(第六屆)機(jī)器人及智能工廠展
-
7月31日免費(fèi)預(yù)約>> OFweek 2025具身機(jī)器人動力電池技術(shù)應(yīng)用大會
-
免費(fèi)參會立即報(bào)名>> 7月30日- 8月1日 2025全數(shù)會工業(yè)芯片與傳感儀表展
推薦專題
- 1 AI 眼鏡讓百萬 APP「集體失業(yè)」?
- 2 大廠紛紛入局,百度、阿里、字節(jié)搶奪Agent話語權(quán)
- 3 深度報(bào)告|中國AI產(chǎn)業(yè)正在崛起成全球力量,市場潛力和關(guān)鍵挑戰(zhàn)有哪些?
- 4 一文看懂視覺語言動作模型(VLA)及其應(yīng)用
- 5 上海跑出80億超級獨(dú)角獸:獲上市公司戰(zhàn)投,干人形機(jī)器人
- 6 國家數(shù)據(jù)局局長劉烈宏調(diào)研格創(chuàng)東智
- 7 下一代入口之戰(zhàn):大廠為何紛紛押注智能體?
- 8 百億AI芯片訂單,瘋狂傾銷中東?
- 9 Robotaxi新消息密集釋放,量產(chǎn)元年誰在領(lǐng)跑?
- 10 格斗大賽出圈!人形機(jī)器人致命短板曝光:頭腦過于簡單