下面我在主题中提到的代码通过使用haarcascade- Opencv / Python检测图像中的每个面孔。
代码检测到所有面孔,
但是我需要检测图像中的相同面孔,然后绘制具有不同颜色的边界框
我是初学者,我用谷歌搜索了如何做到这一点,但我还不够。
我知道我需要数据集,但是我不知道如何训练它以及如何实现下面的代码。
以前有人对此有经验吗?
也许有人可以根据下面的代码给我一个例子,然后我将尝试遵循他的步骤。
检测人脸的代码:
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)
答案 0 :(得分:0)
第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