OpenCV-Python версия 3.4.1
Я пытаюсь обнаружить несколько объектов с помощью камеры. Объектами являются Лицо, глаза, ложка, ручка. Ложка и ручка особенные, т. Е. Они должны обнаруживать только ручку и ложку, с которыми я их натренировал. Но он распознает все виды лиц и глаз, так как я использовал файл .xml для распознавания лиц и глаз, который поставляется с OpenCV-Python.
Мой вопрос касается кода. В моем коде есть строка, которая говорит
Detective MultiSale (серый, 1,3, 10). Теперь я использовал документацию и все еще не мог четко понять последние два параметра скобки.
Мой код:
# with camera feed
import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
spoon_cascade = cv2.CascadeClassifier('SpoonCascade.xml')
pen_cascade = cv2.CascadeClassifier('PenCascade.xml')
cap = cv2.VideoCapture('link')
while True:
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
spoons = spoon_cascade.detectMultiScale(gray, 1.3, 10)
pens = pen_cascade.detectMultiScale(gray, 1.3, 10)
for (x, y, w, h) in spoons:
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img, 'Spoon', (x-w, y-h), font, 0.5, (0, 255, 255), 2,
cv2.LINE_AA)
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
for (x, y, w, h) in pens:
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img, 'Pen', (x-w, y-h), font, 0.5, (0, 255, 255), 2,
cv2.LINE_AA)
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
for (x, y, w, h) in faces:
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img, 'Face', (x + w, y + h), font, 0.5, (0, 255, 255), 2,
cv2.LINE_AA)
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
roi_color = img[y:y + h, x:x + w]
roi_gray = gray[y:y + h, x:x + w]
eyes = eye_cascade.detectMultiScale(roi_gray)
for (ex, ey, ew, eh) in eyes:
cv2.rectangle(roi_color, (ex, ey), (ex + ew, ey + eh), (0, 0,
255), 2)
cv2.imshow('Voila', img)
cv2.imwrite('KuchhToDetected.jpg', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Мой вопрос:
Это просто вопрос проб и ошибок при настройке этих двух последних параметров или можно узнать, как их изменить в соответствии с изображениями?
По моему мнению, эти два фактора очень важны и делают код очень чувствительным, поскольку он влияет на ложные срабатывания. Как правильно установить их, чтобы уменьшить количество ложных срабатываний?
Это действительно важный параметр в случае обнаружения объекта, поэтому было бы полезно для всех, если бы у нас был ответ раз и навсегда.
Спасибо.