python opencv3 運動檢測

2021-10-01 03:51:36 字數 2605 閱讀 5257

git:

思路:  開啟攝像頭後 設定乙個當前幀為背景, 在之後檢測到的幀都與背景對比不同,對不同的地方進行檢測

1

#coding:utf-823

"""4

計算幀之間的差異 考慮背景幀與其他幀之間的差異

5"""67

import

cv28

import

numpy as np910

#呼叫攝像頭

11 camera =cv2.videocapture(0)

1213

14 kernel = np.ones((5, 5), np.uint8)

15 background =none

1617

while

true:18#

讀入攝像頭的幀

19 ret, frame =camera.read()20#

把第一幀作為背景

21if background is

none:

22 background =cv2.cvtcolor(frame, cv2.color_bgr2gray)

23 background = cv2.gaussianblur(background, (21, 21), 0)

24continue25#

讀入幀26 gray_frame =cv2.cvtcolor(frame, cv2.color_bgr2gray)27#

高斯平滑 模糊處理 減小光照 震動等原因產生的雜訊影響

28 gray_frame = cv2.gaussianblur(gray_frame, (21, 21), 0)

2930

#檢測背景和幀的區別

31 diff =cv2.absdiff(background, gray_frame)32#

將區別轉為二值

33 diff = cv2.threshold(diff, 25, 255, cv2.thresh_binary)[1]34#

定義結構元素

35 es = cv2.getstructuringelement(cv2.morph_ellipse, (9, 4))36#

膨脹運算

37 diff = cv2.dilate(diff, es, iterations=2)38#

搜尋輪廓

39 image, cnts, hierarcchy =cv2.findcontours(diff.copy(),

4041

"""42

cv.findcontours()

43引數:

441 要尋找輪廓的影象 只能傳入二值影象,不是灰度影象

452 輪廓的檢索模式,有四種:

46cv2.retr_external表示只檢測外輪廓

47cv2.retr_list檢測的輪廓不建立等級關係

48cv2.retr_ccomp建立兩個等級的輪廓,上面的一層為外邊界,

49裡面的一層為內孔的邊界資訊。

50如果內孔內還有乙個連通物體,這個物體的邊界也在頂層

51cv2.retr_tree建立乙個等級樹結構的輪廓

523 輪廓的近似辦法

5354

相鄰的兩個點的畫素位置差不超過1,

55即max(abs(x1-x2),abs(y2-y1))==1

5657

只保留該方向的終點座標,例如乙個矩形輪廓只需4個點來儲存輪廓資訊

58返回值:

59contours:乙個列表,每一項都是乙個輪廓, 不會儲存輪廓所有的點,只儲存能描述輪廓的點

60hierarchy:乙個ndarray, 元素數量和輪廓數量一樣,

61每個輪廓contours[i]對應4個hierarchy元素hierarchy[i][0] ~hierarchy[i][3],

62分別表示後乙個輪廓、前乙個輪廓、父輪廓、內嵌輪廓的索引編號,如果沒有對應項,則該值為負數

63"""

64for c in

cnts:65#

輪廓太小忽略 有可能是斑點雜訊

66if cv2.contourarea(c) < 1500:

67continue68#

將輪廓畫出來

python opencv3 輪廓檢測

git 1 coding utf823 import cv24 import numpy as np56 建立乙個200 200 的黑色空白影象 7 img np.zeros 200,200 dtype np.uint8 8 在影象的 位置 放置乙個100 100的白色方塊 9 img 50 150...

python opencv3 攝像頭人臉檢測

git 1 coding utf823 import cv2456 defdetect 7 建立人臉檢測的物件 8 face cascade cv2.cascadeclassifier data haarcascade frontalface default.xml 9 建立眼睛檢測的物件 10 e...

「運動世界」 小球漫步(3)

明白了簡單的小球運動後,再來看看小球是如何 漫步 的!多執行緒的初步運用 下面是多個小球的 漫步 圖 寫出這樣乙個效果,我們需要建立四個類 面板類,類,小球類和執行緒類。在不同的類中我們編寫相對應的內容,這樣做,一是,可以方便我們以後的修改 二是,有助於我們自己,對整個過程有乙個自己的邏輯或認知。p...