diff = cv2.threshold(diff, 25, 255, cv2.THRESH_BINARY)[1]
diff = cv2.dilate(diff, self.es, iterations=2)
image, cnts, hierarchy = cv2.findContours(diff.copy(),cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
coordinate = []
bigC = None
bigMulti = 0
for c in cnts:
if cv2.contourArea© < 1500:
continue
(x,y,w,h) = cv2.boundingRect©
if w * h > bigMulti:
bigMulti = w * h
bigC = ((x,y),(x+w,y+h))
if bigC:
cv2.rectangle(frame, bigC[0],bigC[1], (255,0,0), 2, 1)
coordinate.append(bigC)
message = {“coord”:coordinate}
message[‘msg’] = None
return MessageItem(frame,message)
class Tracker(object):
‘’’
追踪者模块,用于追踪指定目标
‘’’
def init(self,tracker_type = “BOOSTING”,draw_coord = True):
‘’’
初始化追踪器种类
‘’’
#获得opencv版本
(major_ver, minor_ver, subminor_ver) = (cv2.version).split(‘.’)
self.tracker_types = [‘BOOSTING’, ‘MIL’,‘KCF’, ‘TLD’, ‘MEDIANFLOW’, ‘GOTURN’]
self.tracker_type = tracker_type
self.isWorking = False
self.draw_coord = draw_coord
#构造追踪器
if int(minor_ver) < 3:
self.tracker = cv2.Tracker_create(tracker_type)
else:
if tracker_type == ‘BOOSTING’:
self.tracker = cv2.TrackerBoosting_create()
if tracker_type == ‘MIL’:
self.tracker = cv2.TrackerMIL_cr