简单几行就可以实现对动态物体的追踪,足见opencv在图像处理上的强大。
python代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import cv2
import numpy as np
camera = cv2.VideoCapture( 0 )
firstframe = None
while True :
ret,frame = camera.read()
if not ret:
break
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray,( 21 , 21 ), 0 )
if firstframe is None :
firstframe = gray
continue
frameDelta = cv2.absdiff(firstframe,gray)
thresh = cv2.threshold(frameDelta, 25 , 255 , cv2.THRESH_BINARY)[ 1 ]
thresh = cv2.dilate(thresh, None , iterations = 2 )
# cnts= cv2.findContours(thresh.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
x,y,w,h = cv2.boundingRect(thresh)
frame = cv2.rectangle(frame,(x,y),(x + w,y + h),( 0 , 0 , 255 ), 2 )
cv2.imshow( "frame" , frame)
cv2.imshow( "Thresh" , thresh)
cv2.imshow( "frame2" , frameDelta)
key = cv2.waitKey( 1 )& 0xFF
if key = = ord ( "q" ):
break
camera.release()
cv2.destroyAllWindows()
|
效果图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://blog.csdn.net/cike14/article/details/50649811