Python+OpenCV目標(biāo)跟蹤實(shí)現(xiàn)基本的運(yùn)動(dòng)檢測(cè)
目標(biāo)跟蹤是對(duì)攝像頭視頻中的移動(dòng)目標(biāo)進(jìn)行定位的過(guò)程,有著非常廣泛的應(yīng)用。實(shí)時(shí)目標(biāo)跟蹤是許多計(jì)算機(jī)視覺(jué)應(yīng)用的重要任務(wù),如監(jiān)控、基于感知的用戶界面、增強(qiáng)現(xiàn)實(shí)、基于對(duì)象的視頻壓縮以及輔助駕駛等。
有很多實(shí)現(xiàn)視頻目標(biāo)跟蹤的方法,當(dāng)跟蹤所有移動(dòng)目標(biāo)時(shí),幀之間的差異會(huì)變的有用;當(dāng)跟蹤視頻中移動(dòng)的手時(shí),基于皮膚顏色的均值漂移方法是最好的解決方案;當(dāng)知道跟蹤對(duì)象的一方面時(shí),模板匹配是不錯(cuò)的技術(shù)。
本文代碼是做一個(gè)基本的運(yùn)動(dòng)檢測(cè)
考慮的是“背景幀”與其它幀之間的差異
這種方法檢測(cè)結(jié)果還是挺不錯(cuò)的,但是需要提前設(shè)置背景幀,如果是在室外,光線的變化就會(huì)引起誤檢測(cè),還是很有局限性的。
import cv2 import numpy as np camera = cv2.VideoCapture(0) # 參數(shù)0表示第一個(gè)攝像頭 # 判斷視頻是否打開(kāi) if (camera.isOpened()): print('Open') else: print('攝像頭未打開(kāi)') # 測(cè)試用,查看視頻size size = (int(camera.get(cv2.CAP_PROP_FRAME_WIDTH)), int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT))) print('size:'+repr(size)) es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (9, 4)) kernel = np.ones((5, 5), np.uint8) background = None while True: # 讀取視頻流 grabbed, frame_lwpCV = camera.read() # 對(duì)幀進(jìn)行預(yù)處理,先轉(zhuǎn)灰度圖,再進(jìn)行高斯濾波。 # 用高斯濾波進(jìn)行模糊處理,進(jìn)行處理的原因:每個(gè)輸入的視頻都會(huì)因自然震動(dòng)、光照變化或者攝像頭本身等原因而產(chǎn)生噪聲。對(duì)噪聲進(jìn)行平滑是為了避免在運(yùn)動(dòng)和跟蹤時(shí)將其檢測(cè)出來(lái)。 gray_lwpCV = cv2.cvtColor(frame_lwpCV, cv2.COLOR_BGR2GRAY) gray_lwpCV = cv2.GaussianBlur(gray_lwpCV, (21, 21), 0) # 將第一幀設(shè)置為整個(gè)輸入的背景 if background is None: background = gray_lwpCV continue # 對(duì)于每個(gè)從背景之后讀取的幀都會(huì)計(jì)算其與北京之間的差異,并得到一個(gè)差分圖(different map)。 # 還需要應(yīng)用閾值來(lái)得到一幅黑白圖像,并通過(guò)下面代碼來(lái)膨脹(dilate)圖像,從而對(duì)孔(hole)和缺陷(imperfection)進(jìn)行歸一化處理 diff = cv2.absdiff(background, gray_lwpCV) diff = cv2.threshold(diff, 25, 255, cv2.THRESH_BINARY)[1] # 二值化閾值處理 diff = cv2.dilate(diff, es, iterations=2) # 形態(tài)學(xué)膨脹 # 顯示矩形框 image, contours, hierarchy = cv2.findContours(diff.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 該函數(shù)計(jì)算一幅圖像中目標(biāo)的輪廓 for c in contours: if cv2.contourArea(c) < 1500: # 對(duì)于矩形區(qū)域,只顯示大于給定閾值的輪廓,所以一些微小的變化不會(huì)顯示。對(duì)于光照不變和噪聲低的攝像頭可不設(shè)定輪廓最小尺寸的閾值 continue (x, y, w, h) = cv2.boundingRect(c) # 該函數(shù)計(jì)算矩形的邊界框 cv2.rectangle(frame_lwpCV, (x, y), (x+w, y+h), (0, 255, 0), 2) cv2.imshow('contours', frame_lwpCV) cv2.imshow('dis', diff) key = cv2.waitKey(1) & 0xFF # 按'q'健退出循環(huán) if key == ord('q'): break # When everything done, release the capture camera.release() cv2.destroyAllWindows()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python opencv檢測(cè)目標(biāo)顏色的實(shí)例講解
- Python Opencv任意形狀目標(biāo)檢測(cè)并繪制框圖
- OpenCV實(shí)現(xiàn)幀差法檢測(cè)運(yùn)動(dòng)目標(biāo)
- OpenCV+python實(shí)現(xiàn)實(shí)時(shí)目標(biāo)檢測(cè)功能
- 基于深度學(xué)習(xí)和OpenCV實(shí)現(xiàn)目標(biāo)檢測(cè)
- OpenCV實(shí)現(xiàn)車輛識(shí)別和運(yùn)動(dòng)目標(biāo)檢測(cè)
- 如何使用Python和OpenCV進(jìn)行實(shí)時(shí)目標(biāo)檢測(cè)實(shí)例詳解
相關(guān)文章
Python中Dataframe數(shù)據(jù)排序方法(含實(shí)例講解)
在進(jìn)行數(shù)據(jù)分析操作時(shí),經(jīng)常需要對(duì)數(shù)據(jù)按照某行某列排序,或者按照多行多列排序,以及按照索引值排序等等,下面這篇文章主要給大家介紹了關(guān)于Python中Dataframe數(shù)據(jù)排序方法的相關(guān)資料,需要的朋友可以參考下2023-02-02利用python打印出菱形、三角形以及矩形的方法實(shí)例
最近在開(kāi)發(fā)中遇到一個(gè)問(wèn)題,需要利用python實(shí)現(xiàn)菱形、三角形以及矩形等形狀,發(fā)現(xiàn)網(wǎng)上這方面的資料較少,所以總結(jié)分享下,這篇文章主要給大家介紹了關(guān)于利用python打印出菱形、三角形以及矩形的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-08-08Python實(shí)現(xiàn)購(gòu)物程序思路及代碼
本文給大家分享的是使用Python實(shí)現(xiàn)的購(gòu)物小程序的思路要求以及相關(guān)代碼,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下2017-07-07使用Python快速生成chrome插件相關(guān)文件結(jié)構(gòu)
本文主要介紹了如何使用Python編寫一個(gè)程序,它允許用戶創(chuàng)建一些特定文件并將它們保存在指定的文件夾中,同時(shí)也能夠啟動(dòng)?Google?Chrome?瀏覽器并打開(kāi)擴(kuò)展頁(yè)面,感興趣的可以了解一下2024-11-11python接入GoogleAuth的實(shí)現(xiàn)
經(jīng)常會(huì)用到GoogleAuth作為二次驗(yàn)證碼,本文主要介紹了python接入GoogleAuth的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08python實(shí)現(xiàn)班級(jí)檔案管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)班級(jí)檔案管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05tkinter如何實(shí)現(xiàn)label超鏈接調(diào)用瀏覽器打開(kāi)網(wǎng)址
這篇文章主要介紹了tkinter如何實(shí)現(xiàn)label超鏈接調(diào)用瀏覽器打開(kāi)網(wǎng)址問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01