zoukankan      html  css  js  c++  java
  • [Python]Python基于OpenCV批量提取视频中的人脸并保存

    最近在写我们数组图像处理课程的人脸识别作业,需要大量的人脸数据。

    而一个一个的照也很麻烦,所以就写了这样一个程序(借鉴了网上已有的视频读帧),我们提前录制好视频

    然后程序逐帧读取,然后分割出其中的人脸,转换为指定大小并转为灰度图

    效率很不错,一个几十秒的视频就能提取出几百张脸部数据(缺点就是这些脸很相似)

    #-*- coding: UTF-8 -*-
    import cv2
    from PIL import Image
    name = 'name'
    def getface(path):
      cap = cv2.VideoCapture(path)
      classfier = cv2.CascadeClassifier("/home/coding/workspace/haarcascades/haarcascade_frontalface_alt2.xml")
      suc = cap.isOpened()  # 是否成功打开
      frame_count = 0
      out_count = 0
      while suc:
          frame_count += 1
          if out_count > 599: #最多取出多少张
            break
          suc, frame = cap.read() #读取一帧
          params = []
          params.append(2)  # params.append(1)
          grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  #将当前桢图像转换成灰度图像
          faceRects = classfier.detectMultiScale(grey, scaleFactor = 1.2, minNeighbors = 3, minSize = (32, 32)) #读取脸部位置
          if len(faceRects) > 0:          #大于0则检测到人脸
                for faceRect in faceRects:  #单独框出每一张人脸
                    x, y, w, h = faceRect
                    image = frame[y - 10: y + h + 10, x - 10: x + w + 10]
                    image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) #转为灰度图
                    img_new = cv2.resize(image,(47,57), interpolation = cv2.INTER_CUBIC) #处理面部的大小
                    cv2.imwrite('/home/coding/workspace/Data/'+ name +'/%d.jpg' % out_count, img_new, params) #存储到指定目录
                    out_count += 1
                    print('成功提取'+ name +'的第%d个脸部'%out_count)
                    break #每帧只获取一张脸,删除这个即为读出全部面部
      cap.release()
      cv2.destroyAllWindows()
      print('总帧数:', frame_count)
      print('提取脸部:',out_count)
    
    if __name__ == '__main__':
        getface("/home/coding/workspace/Data/Videos/"+ name +".mp4") #参数为视频地址
  • 相关阅读:
    笔记35 跨重定向请求传递数
    判断邮箱的正则表达式
    按钮
    async await 的用法
    笔记34 Spring MVC的高级技术——处理multipart形式的数据
    Convert Sorted Array to Binary Search Tree
    Binary Tree Zigzag Level Order Traversal
    Unique Binary Search Trees,Unique Binary Search Trees II
    Validate Binary Search Tree
    Populating Next Right Pointers in Each Node,Populating Next Right Pointers in Each Node II
  • 原文地址:https://www.cnblogs.com/lee-li/p/10765822.html
Copyright © 2011-2022 走看看