python+opencv 人脸检测GUI界面
时间: 2023-10-05 18:05:42 浏览: 59
以下是Python OpenCV 人脸检测GUI界面的示例代码:
```python
import cv2
import tkinter as tk
from PIL import Image, ImageTk
class FaceDetectionGUI:
def __init__(self):
self.window = tk.Tk()
self.window.title("人脸检测GUI界面")
# 创建输入框和按钮
self.input_label = tk.Label(self.window, text="请输入图片路径:")
self.input_label.pack()
self.input_entry = tk.Entry(self.window)
self.input_entry.pack()
self.detect_button = tk.Button(self.window, text="检测", command=self.detect_faces)
self.detect_button.pack()
# 创建显示图片的标签
self.image_label = tk.Label(self.window)
self.image_label.pack()
def detect_faces(self):
# 读取图片
image_path = self.input_entry.get()
image = cv2.imread(image_path)
# 创建人脸检测器
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
# 检测人脸
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray_image, scaleFactor=1.1, minNeighbors=5)
# 在图片上标记人脸位置
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
# 将处理后的图片显示在GUI界面上
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = Image.fromarray(image)
image = ImageTk.PhotoImage(image)
self.image_label.configure(image=image)
self.image_label.image = image
def run(self):
self.window.mainloop()
if __name__ == "__main__":
gui = FaceDetectionGUI()
gui.run()
```
该代码创建了一个简单的GUI界面,包含一个输入框和一个按钮,用户可以输入图片路径并点击按钮进行人脸检测。检测结果将显示在界面上。在检测过程中,代码使用OpenCV的人脸检测器检测图片中的人脸,并在图片上标记人脸位置。最终,代码将处理后的图片转换为PIL Image对象,并将其显示在GUI界面上。