Skip to content

SongShawn/facego

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

视频人脸检测与截取工具

一个使用Go语言实现的高效视频人脸检测和截取工具,支持并发处理,能快速从视频中检测并保存人脸图像,并为人脸质量打分。

功能特点

  1. 🔍 读取视频文件并逐帧检测人脸
  2. 📸 自动截取检测到的人脸并保存为图片
  3. ⭐ 为人脸质量打分(基于大小和清晰度)
  4. ⚡ 多协程并发处理,提高解析速率
  5. 🎯 支持命令行参数配置,灵活使用

环境需求

  • Go 1.18+(推荐使用最新版本)
  • OpenCV 4.x

安装说明

重要提示:安装OpenCV和配置GoCV环境可能比较复杂。请参考本项目中的INSTALL.md文件,获取详细的Windows平台安装指南。

  1. 首先安装Go语言环境
  2. 按照INSTALL.md中的步骤安装OpenCV和配置GoCV
  3. 安装GoCV包:
    go get -u gocv.io/x/gocv
  4. 下载人脸检测模型: haarcascade_frontalface_default.xml

使用方法

# 基本使用(使用默认参数)
go run main.go

# 自定义参数使用
go run main.go -video your_video.mp4 -model haarcascade_frontalface_default.xml -output detected_faces -workers 8 -skip 1

命令行参数说明

  • -video: 输入视频文件路径(默认为 "input_video.mp4")
  • -model: 人脸检测模型路径(默认为 "haarcascade_frontalface_default.xml")
  • -output: 人脸图像输出目录(默认为 "detected_faces")
  • -workers: 并发工作协程数量(默认为 4)
  • -skip: 跳帧数量(用于加快处理速度,默认为 0,即不跳帧)

输出文件命名规则

输出的人脸图像文件命名格式为:

face_worker{workerID}_frame{frameNum}_{timestamp}_quality{score}.jpg
  • workerID: 处理该帧的工作协程ID
  • frameNum: 人脸所在的视频帧号
  • timestamp: 时间戳(确保唯一性)
  • score: 人脸质量评分(0-100分)

人脸质量评分标准

评分基于以下两个因素:

  1. 人脸大小(占30%权重):适中的人脸大小(50-200像素)得分更高
  2. 清晰度(占70%权重):基于拉普拉斯算子计算的图像清晰度

性能优化建议

  1. 对于长视频,可以使用 -skip 参数跳帧处理,提高速度
  2. 根据CPU核心数调整 -workers 参数,一般设置为CPU核心数的1-2倍
  3. 对于高清视频,可以考虑先降采样处理再进行人脸检测

常见问题解决

  1. 编译错误:找不到opencv2/opencv.hpp

    • 请参考INSTALL.md文件,确保正确设置了CGO环境变量
    • 确保OpenCV已正确安装并配置
  2. OpenCV 4.12.0 兼容性问题 如果您安装了OpenCV 4.12.0版本并在编译时遇到protobuf相关错误(如"error: temporary of non-literal type 'google::protobuf::internal::CallOnceInitializedMutexstd::mutex' in a constant expression"),请尝试以下解决方案:

    • 更新GoCV版本
      go get -u gocv.io/x/gocv
    • 降级到更稳定的OpenCV版本(如4.5.x或4.6.x)
    • 查看GoCV官方文档获取最新的兼容性信息
  3. 无法找到人脸

    • 确保已下载并正确放置人脸检测模型文件
    • 调整视频的亮度和对比度,有助于提高检测准确率
  4. 处理速度慢

    • 增加 -skip 参数值,减少处理的帧数
    • 增加 -workers 参数值,提高并发处理能力
    • 对于高清视频,可以先进行降采样处理

注意事项

  1. 程序需要足够的内存来处理视频和图像数据
  2. 对于大型视频文件,处理时间可能较长
  3. 人脸检测的准确性取决于视频质量和人脸清晰度

License

MIT

About

人脸检测项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages