python 制作拍照小工具(人脸识别)

在做人脸识别时需要录入人脸数据,数据需要一个文件夹装一个人的照片,并且以人命来命名文件夹名,还有就是每个人只需存一张照片即可。

import cv2
import os
import shutil


# cv2 不能保存有中文路径,所以先将文件命名为 new ,保存成功后再改回中文名
# 拍照,以姓名命名文件夹名
def take_photo(filePath, imgName):
    cap = cv2.VideoCapture(0)
    name = input("请输入你的姓名('q' 退出):")
    if name == 'q':
        print('拍照结束!')
        return 0
    print('开始拍照啦!按下空格键拍照(esc退出)')
    while True:
        success, img = cap.read()
        cv2.imshow('photo', img)
        key = cv2.waitKey(1)
        if key == ord(' '):
            # 先使用英文名
            en_namePath = os.path.join(filePath, 'new')
            # 实际文件名
            namePath = os.path.join(filePath, name)
            # 临时图片全路径
            imgPath = os.path.join(en_namePath, imgName)
            try:
                # 建立文件夹
                os.makedirs(en_namePath)
            except FileExistsError:
                # 已存在就跳过
                pass
            try:
                len_path = len(os.listdir(namePath))
            except FileNotFoundError:
                os.makedirs(namePath)
                len_path = len(os.listdir(namePath))
            if len_path == 0:
                cv2.imwrite(imgPath, img)
                # 先删除临时建立的实际文件名
                shutil.rmtree(namePath)
                # 将英文文件名改回真正的名字
                os.rename(en_namePath, namePath)
                print(f'图像已保存到“{namePath}”中!')
            else:
                if input('只能存一张照片,是否需要替换(y/n):') == 'y':
                    cv2.imwrite(imgPath, img)
                    # 先删除原有的实际文件名
                    shutil.rmtree(namePath)
                    os.rename(en_namePath, namePath)
                    print(f'替换成功!图像已保存到“{namePath}”中!')
                else:
                    # 删去临时文件夹 new
                    shutil.rmtree(en_namePath)
            name = input("请输入你的姓名('q' 退出):")
            if name == 'q':
                break
            print('开始拍照啦!按下空格键拍照(esc退出)')
            continue
        elif key == 27:
            break
    print('拍照结束!')


if __name__ == '__main__':
    # 图片存储位置的根路径
    filepath = './data/dataBS'
    # 保存的图片名
    imgName = '1.png'
    take_photo(filePath=filepath, imgName=imgName)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值