python练手_视频文件中人脸识别图片保存

使用现有视频文件,练习一下面部以及眼睛判断,将符合条件的区域进行保存,就是误判较多。

import cv2

#面部识别与眼睛识别加载
faceCascade = cv2.CascadeClassifier(“./venv/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml”)
faceCascade_eye = cv2.CascadeClassifier(“./venv/Lib/site-packages/cv2/data/haarcascade_eye.xml”)

#读取视频文件
video = cv2.VideoCapture(‘./image/dl10.mp4’)

#视频速率
V_FPS = video.get(cv2.CAP_PROP_FPS)
V_COUNT = video.get(cv2.CAP_PROP_FRAME_COUNT)
#视频宽度高度
V_WIDTH = video.get(cv2.CAP_PROP_FRAME_WIDTH)
V_HEIGHT = video.get(cv2.CAP_PROP_FRAME_HEIGHT)

print(‘V_FPS:’,V_FPS,‘V_COUNT:’,V_COUNT,‘V_WIDTH’,V_WIDTH,‘V_HEIGHT’,V_HEIGHT,‘时长秒:’,str(round(V_COUNT/V_FPS)))

num = 0 #定义变量,用于文件名标记
while (video.isOpened()):
retval,image = video.read()
MSEC = video.get(cv2.CAP_PROP_POS_MSEC)
if round(MSEC/1000,2)%10 ==1:
print(‘时长秒:’,str(round(V_COUNT/V_FPS)),‘MSEC’,str(round(MSEC/1000,2)))

#cv2.namedWindow('video',0)
#cv2.resizeWindow('video',1280,720)

if retval == True:
    #cv2.imshow('video',image)
    faces = faceCascade.detectMultiScale(image, 1.15)
    #print('faces个数:',len(faces),faces)
    faces_num = 0
    for (x, y, w, h) in faces:
        #print('xywh', (x, y, w, h))
        if w >= 50: #图像宽超过50才保存,因为太小的误判可能性更大
            cropped = image[y:y + w, x:x + h]  # 裁剪坐标为[y0:y1, x0:x1]
            #加入眼睛识别,如果存在眼睛在保存
            eye = faceCascade_eye.detectMultiScale(cropped, 1.15)
            if len(eye) > 0:
                print('眼睛:',len(eye))
                cv2.imwrite("./image/weimi_meinv/meinv_" + str(num)+'_'+str(faces_num) + '.jpeg', cropped)
            faces_num += 1
            num += 1
else:
    break
key = cv2.waitKey(1)
if key == 27:
    break

video.release()
cv2.destroyAllWindows()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值