自建人脸数据集方法

将需要提取的图片放在第一个文件夹中

将需要生成的图片放在第二个文件夹中
调整好路径,直接运行即可

import cv2
import os

if __name__ == '__main__':
    # print('catching your face and writting into disk...')
    # read_directory("0/",100,"1/")
    # read_directory('getTrainData', 0, 'C:/Users/Administrator/Desktop/x/no6/lufei2/X', 100)
    # getTrainData('getTrainData', 0, './face_dataset/1/', 10)
    directory_name=r"D:\pyproject\project1\BASfigure\1"
    path_name=r"D:\pyproject\project1\BASfigure\0\0"
    max_num=10
    num = 0#记录图片数量
    for filename in os.listdir(directory_name):
        # print(filename)  # 仅仅是为了测试
        img = cv2.imread(directory_name + "/" + filename)
        #####显示图片#######
        # print(img)
        # cv2.imshow(filename, img)

        cap = cv2.imread(directory_name)


        classifier = cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml')
        color = (0, 255, 0)

        grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 灰度化

        faceRects = classifier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))
        # faceRects = cv2.re
        # print(faceRects)
        # print(len(faceRects))
        if len(faceRects)>0:
            for faceRect in faceRects:
                x, y, w, h = faceRect
                image_name = '%s%d.jpg' % (path_name, num)  # 这里为每个捕捉到的图片进行命名,每个图片按数字递增命名。
                image = img[y:y + h, x:x + w]  # 将当前帧含人脸部分保存为图片
                image=cv2.resize(image,(128,128),interpolation = cv2.INTER_AREA)
                # image_name2=(path_name + "/" +image_name)
                # print(image_name)
                # print(image)
                cv2.imwrite(image_name, image)
                # print(image_name)
                # print(image)
                num += 1
                print(num)
        #         if num > max_num:  # 如果超过指定最大保存数量退出循环
        #             break
        #         cv2.rectangle(img, (x, y), (x + w, y + h), color, 2)  # 画出矩形框
        #         font = cv2.FONT_HERSHEY_SIMPLEX  # 获取内置字体
        #         cv2.putText(img, ('%d' % num), (x + 30, y + 30), font, 1, (255, 0, 255),
        #                     4)  # 调用函数,对人脸坐标位置,添加一个(x+30,y+30)的矩形框用于显示当前捕捉到了多少人脸图片
        #
        #             # cv2.rectangle(img, (x, y), (x + w, y + h), color, 2)  # 画出矩形框
        # if num>max_num:
        #     break
        #
        # # cv2.imshow(filename, img)
        # c=cv2.waitKey(10)
        # if c & 0xFF == ord('q'):
        #     break
        # cv2.destroyAllWindows()






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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值