用Haarcascade检测的面,如何在不同的面上绘制边界框

2024-04-23 20:25:11 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码就像我在主题中所说的那样,使用haarcascade-Opencv/Python检测图像中的每个人脸。在

Detects and drawing boxes like this

代码检测所有面

但我需要在图像中检测相同的面,然后用不同的颜色绘制边界框

I need outpu Like this

我开始在谷歌上搜索如何做到这一点,但我做得不够。在

我知道我需要数据集,但我不知道如何训练它以及如何实现下面的代码。。在

以前有人有这方面的经验吗?在

也许我可以根据下面的代码给我一个例子。在

检测人脸的代码:

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)

Tags: 代码test图像imageimportpltcv2users
1条回答
网友
1楼 · 发布于 2024-04-23 20:25:11

cv2.rectangle(test_image, (x, y), (x+w, y+h), (0, 255, 0), 2)行 参数(0255,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

相关问题 更多 >