【问题标题】:How to View cropped face on video如何在视频中查看裁剪的脸
【发布时间】:2018-05-14 07:47:57
【问题描述】:

我已成功检测到人脸,将裁剪后的人脸保存在文件夹中。然后使用 cv2.puttext 查看视频中检测到的人脸总数。

现在我想在视频中显示每张裁剪的脸,就像显示总数一样。

代码如下:

import numpy as np
import cv2
import time
from time import strftime

num = 0
total = 0


face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

cap = cv2.VideoCapture(0)
previous_millis = 0

while 1:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img,'Person Count Algorithm',(10,50), font, 1,(255,0,0),2,cv2.LINE_AA)

    S1=int(strftime("%S"))
    #print "timing" 
    #print(S1)

    millis = int(round(time.time() * 5000)) 
    interval = 2000
    #print(millis) 
    if(int(millis-previous_millis) >= interval):
            previous_millis = millis
        faces = face_cascade.detectMultiScale(gray, 1.3, 5)
        #time.sleep(2)

        for (x,y,w,h) in faces:
        cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[y:y+h, x:x+w]
        cv2.putText(img, 'person', (x,y-10), cv2.FONT_HERSHEY_SIMPLEX, 1.5, (255,0,0), 2)
            cv2.imwrite('crop_faces/crop'+str(num)+'.jpg',roi_color)
                num = num + 1
        print ("FOUND", len(faces), 'PERSON')
        total += len(faces)
        print ('Total Count:', (total))

    font = cv2.FONT_HERSHEY_SIMPLEX
    img = cv2.circle(img, (470, 63), 63, (255,0,0), 3)
    cv2.putText(img, 'Total Count:', (420,40), font, 0.5,(255,0,0),1,cv2.LINE_AA)
    cv2.putText(img, str(total), (436,100), font, 2,(255,0,0),2,cv2.LINE_AA)


    cv2.imshow('image',img)
    k = cv2.waitKey(1) & 0xff
    if k == 27:
        break


cap.release()
cv2.destroyAllWindows()

【问题讨论】:

    标签: python opencv face-detection


    【解决方案1】:
    • 制作一张空的面孔列表。 faces = []
    • 复制裁剪后的脸。 face = numpy.copy(img[y:y+h,x:x+w])
    • 将面部调整为固定的缩略图大小。让我们调用固定大小face_width, face_height。
    • 在faces 列表中追加face。 faces.append(face)。确保列表中不存在裁剪后的脸。
    • 在图像上选择一个点,即px=0, py=0。将列表中的所有人脸复制到从px,py 开始的图像中。 img[py:py+face_height,px:px+face_width] = faces[0] ...

    【讨论】:

      猜你喜欢
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多