只要检测到一张脸,我就可以用for (x, y, w, h) in faces:
获取这些值,但是在没有检测到任何脸之后,我就丢失了这些值。你知道吗
我想画一个矩形来覆盖检测到最后一张脸的区域,并在那里停留一段时间,但是矩形在没有检测到脸的时候消失了。你知道吗
我试图用copy.copy()
将值传递给新变量,但矩形一直不相像。你知道吗
faces = faceCascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=3, minSize=(0, 0))
for (x, y, w, h) in faces:
if x>0: x2 = copy.copy(x)
if y>0: y2 = copy.copy(y)
if w>0: w2 = copy.copy(w)
if h>0: h2 = copy.copy(h)
cv2.rectangle(img, (x2, y2), (x2+w2, y2+h2), (0, 0, 0), -1)
编辑: 对于那些想要更多背景的人,我基本上是想跟踪手的运动,我在做颜色分割来检测皮肤,而人脸干扰了跟踪,因为有时haar检测器检测不到影响手位置估计的人脸,我采取的第一个方法是去除人脸,我知道有更好的方法,但我对OpenCV还不熟悉。你知道吗
我把这些值存储在一个列表中
faces_t = [None]*4
while(cam.isOpened():
faces = faceCascade.detectMultiScale(grey, scaleFactor=1.3, minNeighbors=3, minSize=(0, 0))
for (x, y, w, h) in faces:
faces_t.pop(0)
faces_t.insert(0,x)
faces_t.pop(1)
faces_t.insert(1,y)
faces_t.pop(2)
faces_t.insert(2,w)
faces_t.pop(3)
faces_t.insert(3,w)
X1 = faces_t[0]
Y1 = faces_t[1]
W1 = faces_t[2]
H1 = faces_t[3]
if any(value is None for value in faces_t):
pass
else:
cv2.rectangle(skin_ycrcb, (X1-10, Y1-15), (X1+W1+10, Y1+H1+15), (0, 0, 0), -1)
你可以用这个:
相关问题 更多 >
编程相关推荐