使用OpenCV和Python構建運動熱圖視頻

2020-10-03 人工智慧遇見磐創

OpenCV是一個強大的圖像和視頻處理庫,在這篇文章中,我將創建一個運動熱圖,用於檢測運動、一些物體或人的流動方向,以及在投影公共區域時對建築師的幫助。

簡介:

OpenCV,或(開源計算機視覺)是英特爾於1999年開發的一個庫,主要是計算機視覺和實時視頻操作,它是用C++編寫的,但受不同的語言(包括Python)支持。

工作流程:

這個程序是基於一種被稱為高斯背景減法的技術。這項技術被廣泛應用於用穩定的攝像機檢測運動物體。

背景減法創建一個表示幀(圖像的靜態部分)背景的蒙版,對於每一幀,它將減去前一幀。

讓我們對該算法如何工作的兩個主要步驟進行一個簡要概述:

  • 背景初始化:在第一步中,通過凍結第一幀來計算背景的模型。
  • 更新:在第二步中,下一幀將從上一幀中減去,因此,如果兩幀之間發生變化(移動),則這些幀的差異將反映出該變化,可以通過應用過濾器來進行市場銷售。

以下是背景遮罩應用於從城市攝像機錄製的短視頻的示例:

代碼:

對於整個項目存儲庫,請在此處檢查。

  • https://github.com/robertosannazzaro/motion-heatmap-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循環遍歷幀開始:

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)

第一個if塊檢查該幀是否為視頻的第一幀,這樣做是為了初始化背景減法的背景,然後accum_image使用與該幀的大小相對應的大小來初始化該數組。

filter = background_subtractor.apply(frame) # remove the backgroundthreshold = 2maxValue = 2ret, th1 = cv2.threshold(filter, threshold, maxValue, cv2.THRESH_BINARY)accum_image = cv2.add(accum_image, th1)color_image_video = cv2.applyColorMap(accum_image, cv2.COLORMAP_HOT)

為了消除例如風,小鳥飛行等少量運動,將閾值與maxValue一起應用到遮罩上。

然後將掩碼的結果添加到accum_image數組中,對每個幀執行此操作。結果由用於存儲視頻中發生的每個運動的accum_image數組組成,。

此外,在最後,因此,當已經對每個幀執行了先前描述的操作時,顏色映射被應用於遮罩並且遮罩與當前幀合併。

更進一步說,可以製作一個顯示熱圖逐幀衰減的視頻。為了實現這一點,將導出每個幀,然後再次使用cv2,通過合併所有幀來生成視頻:

video = cv2.VideoWriter('output.avi', fourcc, 30.0, (width, height))for image in images: video.write(cv2.imread(os.path.join(image_folder, image)))cv2.destroyAllWindows()

最後結果:

相關焦點

  • 使用OpenCV和Python構建自己的車輛檢測模型
    utm_source=blog&utm_medium=vehicle-detection-opencv-python)目錄視頻中運動目標檢測的思想視頻中目標檢測的真實世界用例視頻目標檢測的基本概念 幀差分 圖像閾值 檢測輪廓 圖像膨脹
  • 使用OpenCV和Python構建自己的車輛檢測模型
    utm_source=blog&utm_medium=vehicle-detection-opencv-python)目錄視頻中運動目標檢測的思想視頻中目標檢測的真實世界用例視頻目標檢測的基本概念 幀差分 圖像閾值 檢測輪廓 圖像膨脹利用OpenCV
  • 樹莓派監控攝像頭python+picamera或openCV
    python調用攝像頭,完成拍照和直播流的功能。樹莓派4B安裝opencv:sudo apt-get install -y libopencv-dev python3-opencv網絡不好的,下載會中斷,多執行以上命令幾次就好了,段點續傳。
  • 使用Python和OpenCV檢測和標記湖面輪廓
    OpenCV是一個跨平臺的計算機視覺庫,廣泛的被應用於物體識別,機器視覺和圖像處理等領域。這篇文章裡我們將使用OpenCV探測地圖中湖面的輪廓,並標記面積最大的湖面。下面示例中圖片來至於goolge地圖截圖。
  • Opencv-Python簡介
    剛開始接觸Opencv的時候,使用的是C++版本的,一邊學C++,一邊跟著opencv教材實現裡面的圖像處理操作,將一張曝光不足,黑暗的圖像經過直方圖均衡化變得清晰,感覺很神奇,opencv,嘗試了一下,哇!
  • 使用Python+OpenCV實現圖像數據採集
    在本文中,將提供代碼並指導你如何通過構建與模型交互的拍照接口來真正完成項目。安裝cv2(OpenCV)我們將使用的圖像庫是cv2。因為cv2不能在Kaggle這樣的在線平臺上工作,所以它必須在你的計算機上本地完成。然而,模型的權重仍然可以在Kaggle上進行訓練,以.h5文件的形式下載(基於Keras/TensorFlow)並加載。
  • opencv教程-發展與簡介
    11年讀研的時候開始接觸opencv,一晃使用opencv都快10年了,從最初使用的2.3版本到現在已經4.4版本了,一直用,但卻一直沒有好好從頭到尾仔細看看說明文檔,虧我還是做圖像識別的,汗顏呀~~~為了彌補一下這幾年的遺漏,準備把opencv全面解讀一下,好完備一下圖像方面的知識點。
  • 如何快速簡單的安裝opencv-python
    :可以在使用pip的時候,加上參數-i和鏡像地址(如https://pypi.tuna.tsinghua.edu.cn/simple),例如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python這樣就會從清華鏡像安裝opencv-contrib-python
  • Python-連續圖片合成視頻
    前言很多時候,我們需要將圖片直接轉成視頻。下面介紹用python中的OpenCV將進行多張圖合成視頻。cv2安裝不要直接用pip install cv2,這會報錯。有很多人建議用打開window自帶的cmd,然後運行 pip install opencv-python ,但是我這樣操作失敗了。下面介紹自己去下載Python3.7安裝cv2:(1) cv2文件下載。
  • Opencv-Python彩圖轉化為灰度圖-二值圖
    採集到的彩色圖像一般不會直接使用,為了加快處理速度,會轉換成灰度圖,二值圖後再使用,處理後的效果如下:彩圖-灰度圖-二值圖.jpg下面是實現的代碼:# -*- coding: utf-8 -*- """運行環境 python==3.6 opencv-contrib-python
  • 使用Python為初學者構建AI汽車和行人跟蹤
    pip install opencv-python如果這不起作用,請嘗試:pip install opencv-python-headless如果你仍然無法安裝。嘗試使用搜索,如何在計算機上安裝opencv?
  • Win7-64+Anaconda3+Python3.7+pycharm+OpenCV3.4.9.33—opencv安裝
    介紹Win7 64下opencv_python-3.4.9.33-cp37-cp37m-win_amd64的安裝。二、opencv安裝將下載後的文件opencv_python-3.4.9.33-cp37-cp37m-win_amd64.whl複製到目錄… \Anaconda3\Lib\site-packages 中,打開cmd命令窗口,通過cd指令進入到\Anaconda3\Lib\site-packages文件夾,使用pip install
  • 基於TensorFlow 、OpenCV 和 Docker 的實時視頻目標檢測
    翻譯 | 於志鵬  徐普     校對 | 陶玉龍     整理 | 孔令雙在本文中,我將介紹如何在 Docker 容器中使用 Tensorflow Object-detection API 來執行實時(網絡攝像頭)和視頻的目標檢測。
  • 藉助Streamlit框架,可僅使用Python代碼來構建基於瀏覽器的UI
    圖源:unsplash藉助Streamlit框架,使用用戶界面展示Python項目變得前所未有的簡單,你可以僅僅使用Python代碼來構建基於瀏覽器的UI。本次演示將為迷宮求解器程序構建UI。StreamlitStreamlit是一種Web框架,旨在供數據科學家使用Python輕鬆部署模型和可視化。它運行速度既快又簡約,代碼既漂亮又對用戶友好。
  • Python中如何利用Opencv打開視頻或圖像並用PyQt控制項顯示
    OpenCV是一個基於BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS作業系統上,使用起來十分方便,把它與PyQt結合起來,就可以順利的操作視頻、圖像了。具體安裝請自行百度,這裡介紹使用方法。
  • 「python opencv視覺零基礎」十四、直方圖反向投影
    前文提醒:博主正在參加博客之星評比,成功入選Top200,現在暫居第九歡迎各位點擊了解更多幫我投票,非常感謝~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 「Python+cv2」Python安裝opencv及圖像的基本操作
    Python環境opencv的安裝1、檢查是否安裝python環境3、安裝opencvpython環境下opencv的安裝:pip3 install opencv-pythonpython opencv安裝因為我已經安裝,所以會出現安裝位置的提示。
  • Python3.7 OpenCV 圖像處理=環境安裝及配置
    Python3.7 OpenCV 圖像處理WIN10系統\Anaconda繼承環境\python3.7腳本版本\VSCODE軟體、pycharm>使用環境:window10 、Anaconda 3創建虛擬環境:opencv_py3.7 選擇使用的python版本3.7opencv_py2.7 選擇使用的python版本2.7
  • 使用python+opencv將抖音中跳舞的小姐姐變成跳動的字符串(三)
    上面兩節我們探討了如何將視頻逐幀轉化為圖片以及如何對圖片進行灰度處理,這節我們將上次處理過的圖片轉化為視頻並保存。至此,我們的使用python+opencv將抖音中跳舞的小姐姐變成跳動的字符串教程就告一段落,但是,通過這個實戰項目,我們可以引申出不少Python使用opencv處理視頻及圖片的知識點,熟練掌握會有很大的用處哦。
  • opencv+python製作硬核七夕禮物
    (搞笑一下,祝大家幸福美滿吧,嘿嘿嘿)給大家準備了一份已經寫好的代碼,利用python+opencv+openpyxl,opencv實現讀取圖片像素顏色,然後openpyxl自動填充Excel表格對應單元格背景顏色,得到一副Excel填充圖畫。文末代碼下載連結。先來看看效果叭(gif動圖)!