网站改版影响排名吗,最专业的佛山网站建设价格,网站建设公司哪个好呀,网站建设美工的职位要求人脸识别 创建窗口创建按钮设置字体定义标签用于显示图片选择并显示图片检测图片中的人脸退出程序返回主界面 创建窗口
导入tkinter库#xff0c;创建窗口#xff0c;设置窗口标题和窗口大小。
import tkinter as tkwin tk.Tk()
win.title(人脸识别)
win.geom… 人脸识别 创建窗口创建按钮设置字体定义标签用于显示图片选择并显示图片检测图片中的人脸退出程序返回主界面 创建窗口
导入tkinter库创建窗口设置窗口标题和窗口大小。
import tkinter as tkwin tk.Tk()
win.title(人脸识别)
win.geometry(1000x800)win.mainloop()创建按钮
创建选择图片和识别人脸退出系统返回系统的按钮
button_select tk.Button(win, text选择图片,fgred)
button_select.place(x333,y12)button_detect tk.Button(win, text识别人脸, fgred)
button_detect.place(x666,y12)esc tk.Button(win,text退出系统,fgred)
esc.place(x10,y10)t tk.Button(win,text返回系统,fgred)
t.place(x900,y10)设置字体
“Times New Roman”这是字体名称。20这是字体大小。
my_font (Times New Roman, 20)并添加在按钮中 代码位置
定义标签用于显示图片
两个标签控件用于显示图片并将它们放置在窗口中。image_label_original和image_label_detected分别用于显示原始图像和检测到人脸的图像。将这两个标签放置在窗口的左侧并设置内边距。
image_label_original tk.Label(win)
image_label_original.pack(sidetk.LEFT, padx10, pady80)image_label_detected tk.Label(win)
image_label_detected.pack(sidetk.LEFT, padx10, pady80)代码位置
选择并显示图片
定义全局变量用于存储用户选择的图片路径
selected_image_path None导入所需要的包 filedialog: 这是tkinter的一个扩展模块它提供了一个对话框允许用户选择文件或目录。在您的程序中它用于打开一个文件选择对话框让用户可以选择一张图片。 cv2: 这是OpenCV库的Python接口。OpenCV是一个强大的计算机视觉库支持各种图像和视频处理功能。在您的程序中它用于加载和处理图像以及进行人脸检测。 PIL.Image 和 PIL.ImageTk: 这些是Python Imaging Library (PIL)的一部分现在被称为Pillow。PIL是一个用于处理图像的库而PIL.ImageTk是一个将PIL图像转换为tkinter兼容的PhotoImage对象的模块。在您的程序中它们用于将OpenCV的图像转换为可以在tkinter中显示的格式。
from tkinter import filedialog
import cv2
from PIL import Image, ImageTk定义一个函数来打开文件选择对话框加载用户选择的图片并将其显示在标签上。
def select_image():global selected_image_path# filedialog.askopenfilename() 打开一个文件选择对话框允许用户选择一个图片文件。selected_image_path filedialog.askopenfilename()# 使用OpenCV的 imread 函数加载用户选择的图片。img cv2.imread(selected_image_path)#将OpenCV加载的BGR格式图片转换为RGB格式因为PIL和Tkinter只支持RGB格式。img_rgb cv2.cvtColor(img, cv2.COLOR_BGR2RGB)#使用PIL的 fromarray 函数将RGB格式的图片转换为PIL图像img_pil Image.fromarray(img_rgb)#使用Tkinter的 PhotoImage 函数将PIL图像转换为Tkinter可以识别的格式。img_tk ImageTk.PhotoImage(imageimg_pil)# 显示原始图片# config 方法用于修改控件的配置image_label_original.config(imageimg_tk)#将Tkinter的 PhotoImage 对象绑定到标签上。image_label_original.image img_tk在选择图片的按钮上调用此函数 代码位置
检测图片中的人脸
导入所需要的库 messagebox: 这是tkinter的一个模块用于显示消息框。消息框可以用于显示信息、警告或错误提示。在您的程序中它用于在未检测到人脸时显示提示信息。
from tkinter import messagebox定义一个函数来检测图片中的人脸如果检测到人脸就在人脸周围画矩形框并显示检测结果。
def detect_faces():global selected_image_path
#检查是否已经被赋值。如果已经选择了图片这个变量将包含图片的路径。if selected_image_path:# 使用OpenCV的imread函数加载用户选择的图片img cv2.imread(selected_image_path)
#cvtColor函数将加载的图片从BGR颜色空间转换为灰度颜色空间gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#haarcascade_frontalface_default.xml是OpenCV提供的一个预训练的人脸检测模型用于检测图像中的人脸。face_cascade cv2.CascadeClassifier(cv2.data.haarcascades haarcascade_frontalface_default.xml)#人脸检测模型在灰度图像上检测人脸。detectMultiScale函数返回一个包含检测到的脸部位置的矩形列表。faces face_cascade.detectMultiScale(gray, 1.1, 4)# 判断是否检测到人脸if len(faces) 0:# 在人脸周围画矩形框for (x, y, w, h) in faces:#原始图像上画一个矩形框表示检测到的人脸位置。矩形的坐标是(x, y)宽度和高度分别是w和h矩形的颜色是蓝色RGB值255, 0, 0线宽为2。cv2.rectangle(img, (x, y), (xw, yh), (255, 0, 0), 2)# 转换为PIL格式并显示
#检测到人脸后的图像从BGR颜色空间转换为RGB颜色空间。因为Tkinter和PIL库不支持BGR颜色空间。img_rgb_detected cv2.cvtColor(img, cv2.COLOR_BGR2RGB)#将转换后的图像从NumPy数组转换为PIL图像对象。img_pil_detected Image.fromarray(img_rgb_detected)
#将PIL图像对象转换为Tkinter可以显示的格式。img_tk_detected ImageTk.PhotoImage(imageimg_pil_detected)
#显示转换后的图像。image_label_detected.config(imageimg_tk_detected)
#将Tkinter的PhotoImage对象绑定到标签上以保持图片的引用。这样即使图片被更新标签仍然会显示最新的图片。image_label_detected.image img_tk_detected # keep a referenceelse:# 提示未检测到人脸messagebox.showinfo(提示, 未检测到人脸)else:messagebox.showinfo(提示, 请先选择一张图片)在识别人脸的按钮上调用此函数
退出程序
def Esc():win.destroy()在退出系统的按钮上调用此函数 代码位置
返回主界面
导入所需要的库 subprocess: 这个模块允许你创建新的进程连接到它们的输入/输出/错误管道并获取它们的返回值。在您的程序中它用于启动一个新的Python进程来运行另一个脚本main.py。
import subprocessdef one():subprocess.Popen([python, main.py])win.destroy()在返回系统的按钮上调用此函数 代码位置