Я хотел бы объединить две функции с помощью онлайн-бустинга.
Я прочитал больше статей, в которых объясняется онлайн-бустинг и совместные функции с использованием бустинга, документы:
Идентификация конкретногочеловек, использующий функции цвета, роста и походки для человека, следующего за роботом ,
Отслеживание людей в RGB-D Данные с активными целевыми моделями в режиме онлайн ,
On-line Boosting и Vision ,
Быстрое отслеживание RGB-D людей для сервисных роботов ,
Повышение с помощью функции соединенияПул от разных датчиков , Идентификация человека на основе функций сверточного канала для человека, следующего за роботом , с его кодом здесь
Здесь объясняется AdaBoostClassifier
Я понял это теоретически, но я не могу реализовать это на python.Мой опыт работы с C ++ равен нулю.Кто-нибудь, помогите мне, это мой простой код:
import cv2
import time
import numpy as np
person_cascade = cv2.CascadeClassifier(('haarcascade_upperbody.xml'))
cap = cv2.VideoCapture(0)
while True:
r, frame = cap.read()
#================================color feature===================
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
green_lower = np.array([0, 0, 0], np.uint8)
green_upper = np.array([180, 255, 30], np.uint8)
green = cv2.inRange(hsv, green_lower, green_upper)
(_, contours, hierarchy) = cv2.findContours(green, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for pic, contour in enumerate(contours):
area1 = cv2.contourArea(contour)
if (area1 > 300):
# print area1
x1, y1, w1, h1 = cv2.boundingRect(contour)
img = cv2.rectangle(frame, (x1, y1), (x1 + w1, y1 + h1), (255, 0, 0), 2)
cv2.putText(frame, "green Colour", (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 0, 0))
#====================================upperbody feature=============
if r:
start_time = time.time()
frame = cv2.resize(frame,(640,360)) # Downscale to improve frame rate
gray_frame = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY) # Haar-cascade classifier needs a grayscale image
rects = person_cascade.detectMultiScale(gray_frame)
for (x, y, w, h) in rects:
cv2.rectangle(frame, (x,y), (x+w,y+h),(0,255,0),2)
cv2.imshow("preview", frame)
k = cv2.waitKey(1)
if k & 0xFF == ord("q"): # Exit condition
break