基于opencv和tkinter的人脸器官检测与界面搭建

课上的一个小作业,拿出来分享一下。

import tkinter
import cv2 as cv
from tkinter import *

def open_camera():
    cap = cv.VideoCapture(0, cv.CAP_DSHOW)
    while cap.isOpened():
        ret, img = cap.read()
        gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
        # 实例化级联分类器
        face_cas = cv.CascadeClassifier("haarcascade_frontalface_default.xml")
        eye_cas = cv.CascadeClassifier("haarcascade_eye.xml")
        # 加载分类器
        # face_cas.load('haarcascade_frontalface_default.xml')
        # eye_cas.load('haarcascade_eye.xml')
        # 利用各个分类器进行检测
        face_cas_detect_faces = face_cas.detectMultiScale(img, scaleFactor=1.2, minNeighbors=5)
        eye_cas_detect_eye = eye_cas.detectMultiScale(img, scaleFactor=1.3, minNeighbors=5)

        # 在画面中画出检测部位
        draw_face(img, face_cas_detect_faces)
        draw_eyes(img, eye_cas_detect_eye)
        # draw_mouth(img,mouth_cas_detect_mouths)
        cv.imshow("detect_window", img)
        if cv.waitKey(1) == ord("q"):
            break
    cap.release()
    cv.destroyAllWindows()

def draw_face(img,faces):
    for (x, y, w, h) in faces:
        # 画出人脸框,红色(BGR色彩体系)
        cv.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 1)

def draw_eyes(img,eyes):
    for (x, y, w, h) in eyes:
        # 画出眼框,绿色(BGR色彩体系)
        cv.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 1)

def draw_mouth(img,mouths):
    for (x, y, w, h) in mouths:
        # 画出嘴框,紫色(BGR色彩体系)
        cv.rectangle(img, (x, y), (x + w, y + h), (128, 0, 128), 1)
#窗口关闭函数
def window_break():
    root.destroy()

#主框架窗口
root=Tk()
root.geometry('800x600')
root.title("人脸识别python程序控制台")
#控制台大标题
label1=Label(root,text='我的人脸识别,张老师指导',font=('华文楷体',20))
label1.place(x=170,y=30)
#校徽图片的加载
photo=tkinter.PhotoImage(file='xiaohui.gif')
label2=Label(root,image=photo)
label2.place(x=210,y=90)
#摄像头打开按钮
btn1=Button(root,text='打开摄像头',command=open_camera)
btn1.place(x=290,y=270,width=80,height=50)
#窗口关闭按钮
btn2=Button(root,text='关闭窗口',command=window_break)
btn2.place(x=400,y=270,width=80,height=50)
#更新日志
txt=Text(root)
txt.place(x=200,y=350,width=370,height=80)
txt.insert('1.0','更新日志:10月8日 完善按钮控件功能\n          10月2日 调整用于检测的级联分类器\n          \
9月26日 项目完善\n          9月20日 项目创建')
root.mainloop()

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
【项目介绍】 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如人工智能、通信工程、自动化、软件工程等)的在校学生、老师或者企业员工下载,适合小白学习或者实际项目借鉴参考! 当然也可作为毕业设计、课程设计、课程作业、项目初期立项演示等。如果基础还行,可以在此代码基础之上做改动以实现更多功能。 人脸识别考勤系统 本项目是一个基于 Python人脸识别考勤系统,主要使用了 `dlib`、`opencv`、`tkinter`、`PIL`、`pymysql` 等库,并使用了 KNN 算法进行人脸识别。 环境安装 在运行本项目之前,请确保已经安装了以下环境和库: - Python - PyCharm - dlib(需要 Cmake、Visual Basic、C++ 依赖环境) - opencv 库 - tkinter 库 - pymysql - PIL - threading - time 功能介绍 本项目具有以下功能: - 打开系统按钮:打开摄像头捕获人脸。 - 注册按钮:将人脸、学号、姓名信息存储到数据库中。 - 查看缺勤名单:将没有识别签到的学生学号和姓名导出到打开的名单界面。 - 是否开始训练:点击“是”按钮进行人脸模型的训练。 - 帮助按钮:查看使用软件的注意事项。 注意事项 在使用本项目之前,请注意以下事项: 1. 请先打开系统。 2. 注册时请对准人脸,光线充足。 3. 训练时禁止进行其他操作。 文件说明 本项目包含以下文件: - `recognition.py`:主文件。 - `db.py`:数据库文件。 - `help_tip.py`:帮助窗口文件。 - `precamera.py`:预处理文件。 - `late_name.py`:缺勤名单文件。 - `trained_knn_model.clf`:KNN 算法模型文件。 - `knn_examples` 文件夹:包含了训练集和测试集,仅供学习交流探讨使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值