Обнаруженные с помощью Haarcascade лица, как рисовать ограничивающие рамки над одними и теми же лицами разным цветом - PullRequest
0 голосов
/ 28 февраля 2019

приведенный ниже код, как я уже говорил по теме, обнаруживает все лица на изображении с помощью haarcascade- Opencv / Python.

Detects and drawing boxes like this

Код обнаруживает все лица,

Но мне нужно обнаружить те же лица на изображении, а затем нарисовать ограничивающие рамки разными цветами

I need outpu Like this

Iam начинающий IГуглил, чтобы найти, как я могу это сделать, но я был неадекватен.

Я знаю, что мне нужен набор данных, но я не знаю, как его обучить и как реализовать в приведенном ниже коде ..

Кто-нибудь имел опыт по этому поводу раньше?

Может быть, кто-то может дать мне пример в соответствии с кодом ниже, и тогда я постараюсь следовать его шагам.

код, который распознает лица:

import cv2
import matplotlib.pyplot as plt
test_image = cv2.imread("C:\Users\erdal.alimovski\Desktop\faces.jpg")

test_image_gray = cv2.cvtColor(test_image, cv2.COLOR_BGR2GRAY)
plt.imshow(test_image_gray, cmap='gray')

def convertToRGB(image):
return cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

haar_cascade_face = cv2.CascadeClassifier('C:\Users\haarcascade_frontalface_default.xml')

faces_rects = haar_cascade_face.detectMultiScale(test_image_gray, scaleFactor = 1.2, minNeighbors = 5);

print('Faces found: ', len(faces_rects))

for (x,y,w,h) in faces_rects:
  cv2.rectangle(test_image, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow("yeni",test_image)
cv2.waitKey(10000)

1 Ответ

0 голосов
/ 28 февраля 2019

В строке cv2.rectangle(test_image, (x, y), (x+w, y+h), (0, 255, 0), 2) параметр (0,255,0) означает, что вы каждый раз рисуете зеленый прямоугольник (потому что 255 - это зеленый компонент).

Вы можете либо

1- проходслучайным образом сгенерированный цвет для этого параметра

2 - инициировать список цветов, которые вы хотите использовать, и просмотреть его в for (x,y,w,h) in faces_rects: как

colorList=[(0,255,0),(255,0,0),(0,0,255)] # etc ...
i=0
for (x,y,w,h) in faces_rects:
  cv2.rectangle(test_image, (x, y), (x+w, y+h), colorList[i], 2)
  i=i+1
...