人眼数据集通常用于眼部相关的计算机视觉、眼动追踪、瞳孔检测、情感识别以及生物特征识别等领域的研究和开发。以下是一些常见的人眼数据集:
BioID Face Database: 这个数据库包含1,521张近距离的人脸图像,其中包括瞳孔位置的标记。它通常用于瞳孔检测和人脸识别的研究。
Columbia Gaze Data Set: 这个数据集包含56名参与者的近距离肖像图像,每名参与者提供了9张图像,其中包括注视点的标记。这个数据集通常用于研究注视点估计。
MPIIGaze Dataset: 这个数据集包括多个参与者的眼部图像,每个参与者在室内和室外环境下进行拍摄。它用于研究眼动追踪和注视点估计。
UnityEyes Dataset: 这个数据集包括以3D模型生成的虚拟眼部图像。它通常用于眼动追踪和瞳孔检测的研究。
GazeCapture Dataset: 该数据集包含来自移动设备的用户眼睛图像,被广泛用于研究用户的视线和注视点。
UT Multiview Dataset: 这个数据集包含多视图图像,用于眼部特征提取和眼部运动研究。
这些数据集在不同研究领域和应用中都有其特定的用途。在研究中,根据需要选择一个适合的数据集,并确保遵守数据使用的相关规定和协议。这些数据集通常由学术界或研究机构提供,可以在它们的官方网站或研究论文中找到更多信息。
下载xml依赖-面部 眼部
https://github.com/opencv/opencv/blob/4.x/data/haarcascades/haarcascade_eye.xml
- import cv2
- import os
-
- # 加载Haar级联分类器文件
- eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
- face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
-
- # 打开本地视频文件
- video_path = '1.mp4'
- cap = cv2.VideoCapture(video_path)
-
- # 检查视频是否成功打开
- if not cap.isOpened():
- print("无法打开视频文件")
- exit()
-
- # 创建目录用于保存分帧图片
- output_dir = 'frames'
- if not os.path.exists(output_dir):
- os.makedirs(output_dir)
-
- frame_count = 0
- eye_detected_count = 0
- face_detected_count = 0
- frame_filename_list = []
- frame_filename_no_eyes = []
-
- while True:
- ret, frame = cap.read()
- if not ret:
- break
-
- frame_count += 1
- frame_filename = 0
- # 在每一帧上检测眼部
- gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
- eyes = eye_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
-
- if len(eyes) > 0:
- eye_detected_count += 1
- for (ex, ey, ew, eh) in eyes:
- # 在眼部位置显示红色点阵
- cv2.circle(frame, (ex + ew // 2, ey + eh // 2), 10, (0, 0, 255), -1)
- else:
- # 未检测到眼部的分帧图片
- frame_filename = os.path.join(output_dir, f'frame_{frame_count:04d}_no_eyes.jpg')
- cv2.imwrite(frame_filename, frame)
- frame_filename_no_eyes.append(frame_filename)
-
- # 在每一帧上检测面部
- faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
-
- if len(faces) > 0:
- face_detected_count += 1
- for (fx, fy, fw, fh) in faces:
- # 在面部位置显示绿色矩形
- cv2.rectangle(frame, (fx, fy), (fx + fw, fy + fh), (0, 255, 0), 2)
-
- cv2.imshow('Face and Eye Detection', frame)
-
- # 按Esc键退出检测窗口
- if cv2.waitKey(1) == 27:
- break
-
- # 保存分帧图片
- frame_filename = os.path.join(output_dir, f'frame_{frame_count:04d}.jpg')
- cv2.imwrite(frame_filename, frame)
-
- # 释放视频捕获对象
- cap.release()
- cv2.destroyAllWindows()
-
- # 打印统计信息
- print(f"总帧数: {frame_count}")
- print(f"检测到眼部的帧数: {eye_detected_count}")
- print(f"检测到面部的帧数: {face_detected_count}")
- print(f"未检测到眼部的图片数: {len(frame_filename_no_eyes)}")
- print("未检测到眼部的图片名称:")
- for filename in frame_filename_no_eyes:
- print(filename)