您好,登錄后才能下訂單哦!
這篇文章主要介紹python+opencv怎么實現(xiàn)動態(tài)物體識別,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
注意:這種方法十分受光線變化影響
自己在家拿著手機瞎晃的成果圖:
源代碼:
# -*- coding: utf-8 -*- """ Created on Wed Sep 27 15:47:54 2017 @author: tina """ import cv2 import numpy as np camera = cv2.VideoCapture(0) # 參數(shù)0表示第一個攝像頭 # 判斷視頻是否打開 if (camera.isOpened()): print('Open') else: print('攝像頭未打開') # 測試用,查看視頻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() # 對幀進行預(yù)處理,先轉(zhuǎn)灰度圖,再進行高斯濾波。 # 用高斯濾波進行模糊處理,進行處理的原因:每個輸入的視頻都會因自然震動、光照變化或者攝像頭本身等原因而產(chǎn)生噪聲。對噪聲進行平滑是為了避免在運動和跟蹤時將其檢測出來。 gray_lwpCV = cv2.cvtColor(frame_lwpCV, cv2.COLOR_BGR2GRAY) gray_lwpCV = cv2.GaussianBlur(gray_lwpCV, (21, 21), 0) # 將第一幀設(shè)置為整個輸入的背景 if background is None: background = gray_lwpCV continue # 對于每個從背景之后讀取的幀都會計算其與北京之間的差異,并得到一個差分圖(different map)。 # 還需要應(yīng)用閾值來得到一幅黑白圖像,并通過下面代碼來膨脹(dilate)圖像,從而對孔(hole)和缺陷(imperfection)進行歸一化處理 diff = cv2.absdiff(background, gray_lwpCV) diff = cv2.threshold(diff, 148, 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ù)計算一幅圖像中目標(biāo)的輪廓 for c in contours: if cv2.contourArea(c) < 1500: # 對于矩形區(qū)域,只顯示大于給定閾值的輪廓,所以一些微小的變化不會顯示。對于光照不變和噪聲低的攝像頭可不設(shè)定輪廓最小尺寸的閾值 continue (x, y, w, h) = cv2.boundingRect(c) # 該函數(shù)計算矩形的邊界框 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()
以上是“python+opencv怎么實現(xiàn)動態(tài)物體識別”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。