В инит класса хочу передать первый кадр и путь до каскада (“cascade = …”), дальше там создать массив пустой rects = и вернуть его в “objects = ct.update(rects)”
Подскажите как это всё сделать, заранее спасибо!
# coding=utf-8 import cv2 from pyimagesearch.centroidtracker import CentroidTracker cascade = cv2.CascadeClassifier('cascade/16stage_3hours.xml') video_stream = cv2.VideoCapture("videos/4.mp4") ct = CentroidTracker(maxDisappeared=7, maxDistance=45) while 1: ret, img = video_stream.read() # Чтение первого кадра gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Изменение цвета пространства c BGR на Grey array_coordinate = cascade.detectMultiScale(gray, 1.3, 5) rects = [] # Массив координат прямоугольников объекта for (x, y, w, h) in array_coordinate: # Выделяем найденый объект рамкой cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) rects.append((x, y, x + w, y + h)) # Обновляем массив координат прямоугольников и записываем в переменную objects = ct.update(rects) # <...Код сокращён для примера...> cv2.imshow("counter", img) # Вывод изображения k = cv2.waitKey(30) & 0xff # При нажатии "Esc" закрытие программы if k == 27: break cv2.destroyAllWindows()
Класс который хочу сделать
import cv2 class MultiCascade: def __init__(self, direction, frame): self.direction = direction self.frame = frame gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) array_coordinate = self.direction.detectMultiScale(gray, 1.3, 5) rects = [] for (x, y, w, h) in array_coordinate: cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2) rects.append((x, y, x + w, y + h))