成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenCV 也可以檢測、跟蹤移動物體

開發
在本文中,我將解釋背景減除器的工作原理、不同類型的背景減除器以及如何使用 OpenCV 在 Python 中使用它們。

想象一下,你用手機拍攝視頻,按下一個按鈕,相機就開始錄制視頻。在幕后,手機相機非常快速地捕捉圖像,當你觀看視頻時,你看到的是一幅接一幅的圖像,但你沒注意到,因為這個過程發生得非常快。一秒鐘內,你的手機顯示了30多幅圖像。如果你比較這些圖像并找到它們之間的差異,你就可以檢測到移動物體,這正是背景減除器的工作原理。

使用背景減除器檢測和追蹤鳥類

在本文中,我將解釋背景減除器的工作原理、不同類型的背景減除器以及如何使用 OpenCV 在 Python 中使用它們。

檢測移動物體的方法

1. 基本運動檢測

第一種方法也是最直觀的方法是計算幀與幀之間,或一個被認為是“背景”的幀和所有其他幀之間的差異。這個想法在最高層次上相當簡單:首先,保存第一幀。保存后,將其與新幀進行比較。通過逐像素比較,簡單地從兩幅圖像中減去。通過這種方式,你將獲得移動物體。

這種技術實現起來相當快,但并不適合應用,因為你需要將默認幀設置為背景,而背景在你的應用中可能不會保持恒定。

想象一下,你正在檢測汽車。設置一個默認背景并不會有效,因為汽車在不斷移動,一切都在變化。光線在變化,物體在移動。例如,你將第一幀設置為背景圖像,背景圖像中有3輛汽車,但僅僅一秒鐘后,它們就不會再存在,因為它們在移動。因此,背景圖像變得不準確,因為一切都在迅速變化。因此,算法不會很準確,特別是在環境快速變化的情況下。

看看圖像;算法是工作的,但不是很準確。看看左邊的圖像;有一些無意義的區域。那是因為在視頻中,背景幾乎每秒鐘都在變化,但在算法中,背景是恒定的。

左邊的圖像顯示了默認背景幀和當前幀之間的差異,而右邊的圖像顯示了帶有邊界框的當前幀

我想你已經理解了基本運動檢測的主要思想。根據你的期望,它可能有用。如果你不期望高精度,你可以考慮使用它。為了解決我上面討論的問題,背景減除器開始發揮作用。現在是時候談談背景減除和減除器了。

2. 背景減除 

背景減除是計算機視覺中的一項基本技術,用于在視頻流中將移動物體從背景中隔離出來。通過將視頻中的每一幀與背景模型進行比較,可以識別出顯著差異的區域作為潛在的前景物體。然后,這個前景信息可以用于各種目的,包括目標檢測和追蹤。背景減除通常是許多目標追蹤和檢測算法中的關鍵步驟。

在背景減除中,背景圖像不是恒定的;由于光線變化、物體移動和場景動態等各種因素,它會隨著時間變化。背景減除算法的目標是適應性地建模和更新背景,以在變化的環境中準確檢測前景物體。通過這種方式,背景問題得到了解決。

在 OpenCV 中,背景減除器可以檢測陰影,并且通過閾值處理,它們可以從減除器檢測到的物體中排除陰影。這確實是準確檢測物體的一個非常重要的特性,因為未識別的陰影區域可能被減除器錯誤地解釋為單獨的移動物體,這是不可取的。

使用 OpenCV 中的背景減除器

Opencv 有幾種不同的背景減除器。我將使用其中兩個最著名的減除器:

  • K-最近鄰 (KNN)
  • 高斯混合 (MOG2)

我將只解釋 MOG2 如何進行背景減除,但我將使用這兩種方法來檢測和追蹤視頻。

下面是 MOG2 如何進行背景減除的:

  • 初始化:初始化 K 個高斯分布的混合,以模擬場景的背景。每個像素的背景模型由高斯混合表示,K 是一個預定義的參數。
  • 適應:隨著時間的推移,更新每個像素的背景模型,調整高斯分布的參數以適應場景的變化。
  • 前景檢測:根據高斯混合模型計算每個像素屬于背景的概率。概率低的像素被分類為前景。
  • 更新背景:對于被分類為背景的像素,更新高斯分布以納入新的觀察結果并適應場景的變化
  • 后處理:應用形態學操作(腐蝕、膨脹..)或其他技術來細化前景掩碼并去除噪聲。

代碼 / 檢測和追蹤移動物體

在代碼中,我已經解釋了大部分過程,但理解它的最佳方式是復制代碼并使用 cv2.imshow 函數觀察每個操作后的每一幀。

Subtraction

Threshold

Dilation


# import libraries
import cv2
import numpy as np

# KNN
KNN_subtractor = cv2.createBackgroundSubtractorKNN(detectShadows = True) # detectShadows=True : exclude shadow areas from the objects you detected

# MOG2
MOG2_subtractor = cv2.createBackgroundSubtractorMOG2(detectShadows = True) # exclude shadow areas from the objects you detected

# choose your subtractor
bg_subtractor=MOG2_subtractor

camera = cv2.VideoCapture("resources/run.mp4")

while True:
    ret, frame = camera.read()

    # Every frame is used both for calculating the foreground mask and for updating the background. 
    foreground_mask = bg_subtractor.apply(frame)

    # threshold if it is bigger than 240 pixel is equal to 255 if smaller pixel is equal to 0
    # create binary image , it contains only white and black pixels
    ret , treshold = cv2.threshold(foreground_mask.copy(), 120, 255,cv2.THRESH_BINARY)
    
    #  dilation expands or thickens regions of interest in an image.
    dilated = cv2.dilate(treshold,cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3,3)),iterations = 2)
    
     # find contours 
    contours, hier = cv2.findContours(dilated,cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    
    # check every contour if are exceed certain value draw bounding boxes
    for contour in contours:
        # if area exceed certain value then draw bounding boxes
        if cv2.contourArea(contour) > 50:
            (x,y,w,h) = cv2.boundingRect(contour)
            cv2.rectangle(frame, (x,y), (x+w, y+h), (255, 255, 0), 2)

    cv2.imshow("Subtractor", foreground_mask)
    cv2.imshow("threshold", treshold)
    cv2.imshow("detection", frame)
    
    if cv2.waitKey(30) & 0xff == 27:
        break
        
camera.release()
cv2.destroyAllWindows()

責任編輯:趙寧寧 來源: 小白玩轉Python
相關推薦

2021-01-11 21:08:22

物聯網資產跟蹤IOT

2024-07-30 14:45:08

2017-08-31 08:10:38

傳感器無人機攝像頭

2024-12-25 16:35:53

2017-07-11 07:54:00

無線網絡信息化工業4.0

2025-02-17 07:00:00

ORB對象跟蹤器計算機視覺

2010-08-11 10:58:06

AndroidAndroid NDK

2023-12-26 09:29:12

自動駕駛數據

2023-10-12 09:21:41

Java圖像

2024-07-17 10:30:00

2022-07-21 10:02:47

SonarQube代碼Java

2020-08-25 11:36:44

無人機倉儲物流

2020-03-20 10:10:21

機器人人工智能系統

2024-12-19 08:00:00

FAST算法OpenCV目標跟蹤

2024-10-28 17:17:32

2012-08-14 09:20:00

Python

2022-10-09 14:53:30

物聯網基站移動物聯網

2021-12-21 10:51:30

智能座艙ARLG

2023-01-26 14:15:55

識別分割可遷移

2020-05-15 09:50:11

云計算云架構、私有云
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线永久看片免费的视频 | 一级毛片在线看 | 久久综合伊人一区二区三 | 黄色在线观看国产 | 国产欧美精品一区二区 | 夜夜操天天艹 | 亚洲欧美日韩久久久 | 99re| 成人激情视频免费在线观看 | 日日夜夜免费精品视频 | 精品久久久久久久久久久久久 | 精品一区二区免费视频 | 国产精品久久国产精品99 gif | 精品国产91 | 亚洲一区二区中文字幕在线观看 | 中文字幕乱码视频32 | 97国产精品| 久久精品69 | 久久久久国产 | 日韩成人在线一区 | 欧美一级片在线观看 | www国产亚洲精品 | 亚洲精品中文字幕在线观看 | 亚洲国产免费 | 久久久xx | 日韩欧美国产精品一区二区三区 | 黄色片免费在线观看 | 亚洲一区电影 | 欧美激情精品久久久久久 | 欧美午夜剧场 | 91精品久久久久久久久久入口 | 男人天堂网址 | 9191成人精品久久 | 一区二区三区不卡视频 | 欧美一区二区三区精品免费 | www.夜夜骑.com| 免费成人在线网站 | 二区视频 | 国产成人免费视频网站高清观看视频 | 美女视频黄的免费 | 久久小视频 |