此文執行個體給親們分享了python opencv運動檢測的具體代碼,供大家參考,具體内容如下
# -*- coding:utf-8 -*-
__author__ = 'kingking'
__version__ = '1.0'
__date__ = '14/07/2017'
import cv2
import numpy as np
import time
camera = cv2.VideoCapture(0) # 參數0表示第一個攝像頭
# 判斷視訊是否打開
if (camera.isOpened()):
print('Open')
else:
print('攝像頭未打開')
background = cv2.imread('img.png',0)#讀入一幅圖像
es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (9, 4))
while True:
# 按'q'健退出循環
key = cv2.waitKey(1) & 0xFF
# 讀取視訊流
grabbed, img = camera.read()
gray1 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray1, (21, 21), 0)#可在這添加處理程式
#!!!等相機穩定後按下W選擇背景
if key == ord('w'):
background = gray
print '背景已標明'
diff = cv2.absdiff(gray, background)
binary = cv2.threshold(diff, 25, 255, cv2.THRESH_BINARY)[1]#二值化門檻值處理
dilation = cv2.dilate(binary, es, iterations=2) # 形态學膨脹
contours, hierarchy = cv2.findContours(dilation.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
# 對于矩形區域,隻顯示大于給定門檻值的輪廓,是以一些微小的變化不會顯示。
if cv2.contourArea(c) < 1500:
continue
(x, y, w, h) = cv2.boundingRect(c) # 該函數計算矩形的邊界框
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('img', img)
cv2.imshow('dilation', dilation)
if key == ord('q'):
break
camera.release()#ubuntu一定要釋放相機資源否則要重新開機才能再次使用
cv2.destroyAllWindows()
上面即是這篇文章的内容,希望對各位的學習有所啟發,也希望大家多多支援學貓線上(shtml.net)。
本文來源:https://blog.csdn.net/Lingdongtianxia/article/details/75210351