• 2、Python OpenCV 人脸检测训练识别 用户数据准备 零点


    目录

    1、Python OpenCV 人脸检测训练识别 - 环境安装
    2、Python OpenCV 人脸检测训练识别 - 用户数据准备
    3、Python OpenCV 人脸检测训练识别 - 人脸检测
    4、Python OpenCV 人脸检测训练识别 - 人脸训练
    5、Python OpenCV 人脸检测训练识别 - 人脸识别
    6、Python OpenCV 人脸检测训练识别 - 总结

    1、前言

    做为一完整可用的Demo,根据目录就可以了解到,需要一个用于存储用户基础数据的媒介,为了简化Demo复杂度,本次Demo就采用Excel存储用户基础数据

    2、新建一个Python类

    作为一个用于管理用户数据的模块,我们新建一个UserDataManagement类(Python类参考资料),在类的构造函数用于判断Excel是否存在,如果不存在就新建一个,并录入好表头字段。

    类的构造函数:方法__init__()是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法

    函数参数:self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

    #导入模块 
    import os
    import openpyxl
    
    #用户数据管理
    class UserDataManagement:
    
        #所有类都有一个名为 __init__() 的函数,它始终在启动类时执行
        def __init__(self):
            print("用户数据管理")
            self.UserDataExcelPath = os.path.join(os.getcwd(),'data\\UserData.xlsx')
            if(os.path.exists(self.UserDataExcelPath) == False):
                print("用户数据Excel文件不存在,正在创建......")
                #创建新的workbook
                workBook = openpyxl.Workbook()
                #创建新的sheet表
                workSheet = workBook.create_sheet(title="Sheet1",index=0)
                #往表格第一行输入内容
                workSheet.append(['序号', 'ID', '工号', '名称'])
                #保存
                workBook.save(self.UserDataExcelPath)
    
                if os.path.exists(self.UserDataExcelPath):
                    print("用户数据Excel创建成功......")
                else:
                    print("用户数据Excel创建失败......")
    

    3、用户数据新增

    添加用户数据方法:主要用于录入用户数据(用户ID,工号,名称),在保存用户数据时候,做一些简单验证(用户ID与工号必须唯一),并返回状态与消息
    image

        def AddUserData(self,userID:str,userNumber,userName:str):
            '''
            添加用户数据
            Params:
                userID:用户ID
                userNumber:用户工号
                userName:用户名称
            Returns:
                status:True表示成功过,False表示失败
                message:消息,只有失败才返回消息
            '''
            if len(userID) == 0 or len(userNumber) == 0 or len(userName) == 0:
                status = False
                message = f'参数不能为空'
                return status,message
    
            try:
                #打开Excel文件
                workBook = openpyxl.load_workbook(self.UserDataExcelPath)
                #通过名称获取
                workSheet = workBook['Sheet1']
                # 获取该sheet中的行数
                rows = workSheet.max_row
                print(f"{self.UserDataExcelPath}一共有:{rows}行")
                # 获取第2列所有值(列表生成式)
                userID_list = [str(workSheet.cell(row = i, column = 2).value) for i in range(2, rows + 1)]
                if userID in userID_list:
                    status = False
                    message = f'用户ID已存在:{userID}'
                    return status,message
    
                # 获取第3列所有值(列表生成式)
                userNumber_list = [str(workSheet.cell(row = i, column = 3).value) for i in range(2, rows + 1)]
                if userNumber in userNumber_list:
                    status = False
                    message = f'用户工号已存在:{userNumber}'
                    return status,message
    
                # 往表格写入内容
                workSheet.cell(row = rows + 1, column = 1).value = rows
                workSheet.cell(row = rows + 1, column = 2).value = userID
                workSheet.cell(row = rows + 1, column = 3).value = userNumber
                workSheet.cell(row = rows + 1, column = 4).value = userName
    
                # 保存
                workBook.save(self.UserDataExcelPath)
                status = True
                message = '成功'
            except Exception as e:
                print(f"异常:{str(e)}")
                status = False
                message = str(e)
            
            return status,message
    

    4、用户数据清空

    清空用户数据方法:主要用于清除全部用户数据,初始化Excel,并返回状态与消息
    image

        def DeleteUserData(self):
            '''
            清空用户数据
            Params:
            Returns:
                status:True表示成功,False表示失败
                message:消息,只有失败才返回消息
            '''
            try:
                #打开Excel文件
                workBook = openpyxl.load_workbook(self.UserDataExcelPath)
                #通过名称获取
                workSheet = workBook['Sheet1']
                #获取该sheet中的行数
                rows = workSheet.max_row
                print(f"{self.UserDataExcelPath}一共有:{rows}行")
                while workSheet.max_row > 1:
                    workSheet.delete_rows(2)
                #保存
                workBook.save(self.UserDataExcelPath)
    
                status = True
                message = '删除成功'
            except Exception as e:
                status = False
                message = str(e)
            
            return status,message
    

    5、用户数据输出

    用户数据输出:主要用于查看当前Excel有多少用户数据,并返回状态、消息、列表
    image

        def GetUserData(self,initializedData:bool):
            '''
            获取用户数据
            Params:
                initializedData:True表示加入初始化数据,False表示不加入
            Returns:
                status:True表示成功,False表示失败
                message:消息,只有失败才返回消息
                ExcelData:Excel数据,返回一个列表
            '''
            
            ExcelData = []
            if initializedData:
                ExcelData.append({ "SerialNumber": 0,"UserID": 0,"UserNumber": 0,"UserName": 'Unknown'})
    
            try:
                #打开Excel文件
                workBook = openpyxl.load_workbook(self.UserDataExcelPath)
                #通过名称获取
                workSheet = workBook['Sheet1']
                #获取该sheet中的行数
                rows = workSheet.max_row
                print(f"{self.UserDataExcelPath}一共有:{rows}行")
                for row in range(2, rows + 1):
                    serialNumber = workSheet.cell(row = row, column = 1).value
                    userID = workSheet.cell(row = row, column = 2).value
                    userNumber = workSheet.cell(row = row, column = 3).value
                    userName = workSheet.cell(row = row, column = 4).value
                    rowData = {
                        "SerialNumber": serialNumber,
                        "UserID": userID,
                        "UserNumber": userNumber,
                        "UserName": userName,
                    }
                    ExcelData.append(rowData)
    
                #关闭
                workBook.close()
    
                status = True
                message = '成功'
            except Exception as e:
                status = False
                message = str(e)
            
            return status,message,ExcelData
    
  • 相关阅读:
    [CC-TRIPS]Children Trips
    [HDU5968]异或密码
    [CC-PERMUTE]Just Some Permutations 3
    [HackerRank]Choosing White Balls
    Gym102586L Yosupo's Algorithm
    Gym102586B Evacuation
    Kattis anothercoinweighingpuzzle Another Coin Weighing Puzzle
    Gym102586I Amidakuji
    CF1055F Tree and XOR
    CF241B Friends
  • 原文地址:https://www.cnblogs.com/Angelo/p/16044193.html
Copyright © 2020-2023  润新知