帮我用Python写一个带界面的人脸识别代码
时间: 2024-03-16 17:46:24 浏览: 69
python摄像头实现人脸识别.zip
5星 · 资源好评率100%
好的,下面是一个简单的带界面的人脸识别代码示例,使用了Tkinter和Pillow库来实现图形用户界面(GUI):
```python
import cv2
import face_recognition
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk
class App:
def __init__(self, window, window_title):
self.window = window
self.window.title(window_title)
# 创建“打开文件”按钮
self.btn_open = tk.Button(self.window, text="打开文件", command=self.open_file)
self.btn_open.pack(side="top", pady=10)
# 创建图片显示区域
self.canvas = tk.Canvas(self.window, width=400, height=400)
self.canvas.pack(side="top", padx=10, pady=10)
# 创建“识别人脸”按钮
self.btn_detect = tk.Button(self.window, text="识别人脸", command=self.detect_faces)
self.btn_detect.pack(side="top", pady=10)
# 创建退出按钮
self.btn_quit = tk.Button(self.window, text="退出", command=self.window.quit)
self.btn_quit.pack(side="bottom", pady=10)
# 初始化成员变量
self.image = None
self.image_tk = None
def open_file(self):
# 打开文件对话框
filename = filedialog.askopenfilename(title="选择文件", filetypes=(("JPEG files", "*.jpg"), ("PNG files", "*.png"), ("All Files", "*.*")))
if filename:
# 加载图片
self.image = cv2.imread(filename)
# 显示图片
self.show_image()
def show_image(self):
# 将OpenCV图像转换为Pillow图像
image_rgb = cv2.cvtColor(self.image, cv2.COLOR_BGR2RGB)
image_pil = Image.fromarray(image_rgb)
# 将Pillow图像转换为Tkinter图像
self.image_tk = ImageTk.PhotoImage(image_pil)
# 在画布上显示Tkinter图像
self.canvas.create_image(0, 0, anchor="nw", image=self.image_tk)
def detect_faces(self):
if self.image is not None:
# 获取图片中所有人脸的位置和特征
face_locations = face_recognition.face_locations(self.image)
face_encodings = face_recognition.face_encodings(self.image, face_locations)
# 在图片中标注人脸
for (top, right, bottom, left) in face_locations:
cv2.rectangle(self.image, (left, top), (right, bottom), (0, 255, 0), 2)
# 显示标注后的图片
self.show_image()
# 创建主窗口
window = tk.Tk()
app = App(window, "人脸识别")
window.mainloop()
```
这段代码会弹出一个窗口,包含“打开文件”、“识别人脸”和“退出”三个按钮。用户可以通过点击“打开文件”按钮来选择需要识别的图片,然后点击“识别人脸”按钮来对图片中的人脸进行识别。识别完成后,会在窗口中显示标注后的图片。
阅读全文