4个版本
0.1.4 | 2023年8月7日 |
---|---|
0.1.3 | 2023年8月5日 |
0.1.2 | 2023年8月2日 |
0.1.1 | 2023年8月2日 |
0.1.0 |
|
#595 in 游戏开发
每月下载次数 28
1.5MB
347 行
关于bevy_webcam_facial
Bevy游戏引擎的插件。捕获Webcam图像,找到人脸并提供所有可用数据(人脸矩形坐标,人脸概率)到Bevy游戏引擎,以便在Bevy游戏引擎中进一步使用。
功能
- 使用camera_capture捕获Webcam
- 使用rustface进行人脸位置识别
- 实时且轻量级的SeetaFace Detection模型
- 在单独的Bevy AsyncTaskpool任务中运行,不会阻塞
- 2个数据平滑/去噪过滤器
计划
- 支持MacOSX webcam
- 默认提供几个AI人脸识别模型供选择(简单帧,包含眼睛/鼻子/嘴巴等面部特征,全脸网格识别,情绪检测...)
支持的平台
- Linux
- MacOSX
- Windows
可在Bevy中使用
插件配置
在.add_plugins
时包含几个参数,或使用默认摄像头和设置 .add_plugins(WebcamFacialPlugin::default())
.add_plugins(WebcamFacialPlugin {
config_webcam_device: 0,
config_webcam_width: 640,
config_webcam_height: 480,
config_webcam_framerate: 15,
config_webcam_autostart: true,
config_filter_type: SmoothingFilterType::LowPass(0.1),
config_filter_length: 10,
})
参数
- Web摄像头设备号(0为默认)例如:0,1,2...
- Linux:数字附加到
/dev/video{number}
- Windows:设备号
- Linux:数字附加到
- 帧宽:640
- 帧宽:480
- 每秒帧数:15
- 插件激活后立即开始捕获和发送事件:true/false(可以在运行时启用/禁用,通过
ResMut<WebcamFacialController>
) - 坐标平滑过滤器(目前:MeanMedian,LowPass(f32),NoFilter)
- 用于平滑的数据帧数(5-10是最佳选择,帧数越多,噪声数据越少,但响应速度越慢)
资源
通过可变资源ResMut<WebcamFacialController>
启用/禁用Web摄像头捕获和识别
pub struct WebcamFacialController {
...
pub control: bool,
...
}
带有捕获数据的Event
<Event>WebcamFacialDataEvent
通过Event返回的数据结构
pub struct WebcamFacialData {
pub center_x: f32,
pub center_y: f32,
pub x: f32,
pub y: f32,
pub width: f32,
pub height: f32,
pub score: f32,
}
坐标以浮点数形式映射,范围为 -50.0 至 50.0,相机分辨率无关紧要
- [center_x) 面部中心点 x 坐标
- (center_y) 面部中心点 y 坐标
- (x) 面部矩形框 x 坐标
- (y) 面部矩形框 y 坐标
- (width) 面部矩形框宽度
- (height) 面部矩形框高度
- (score) 检测到的对象是真实面部的概率 0-30..
来自插件的数据的一些想法和用例
- 控制游戏对象变换(变换、旋转、缩放)
- 对象控制(汽车驾驶、玩家移动...)
- 2D游戏中的背景场景移动或3D顶部/侧面视角游戏中的背景场景移动,以增强深度感知或“环顾四周”
- 类似相机FPS的移动
- 围绕场景、玩家或其他对象的旋转
- 场景缩放(地图缩放、场景缩放、狙击手缩放...)
- 恐怖游戏在检测到的面部特写附近弹出怪物
- 你的想象力...
*注意:使用一些插值进行变换,以实现更平滑的变换,例如“bevy_easings”或“bevy_mod_interp”
示例
在[examples]文件夹中提供了三个示例:(建设中)
- object_mover - 使用原始未过滤/有噪声的数据移动对象的最简单示例
- camera_control - 使用过滤数据控制 bevy 摄像机视图
- neck_trainer - 训练你的脖子 :) 最复杂的示例,带有过滤数据 + 骨动画和皮肤
未检查 - 未完成
版本
bevy | bevy_webcam_facial |
---|---|
0.11 | 0.1.4 |
0.11 | 0.1.3 |
0.11 | 0.1.2 |
0.11 | 0.1.1 |
参考材料
以下用于插件编码
未来研究的附加有趣来源
- Tensorflow rust
- Face Detection with Tensorflow Rust (之前已成功测试)
- 实现 mtcnn 面部检测器的 Tensorflow 模型
- https://github.com/cetra3/mtcnn/
- tfjs-model 面部网格的网页演示
- Awesome-Rust-MachineLearning Docs/Projects
许可
根据您的选择,许可协议为
- Apache License,版本 2.0(《LICENSE-APACHE》或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(《LICENSE-MIT》或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则您提交给工作的任何贡献,如 Apache-2.0 许可证中定义的,均将按上述方式双许可,而无需任何附加条款或条件。
依赖项
~46MB
~521K SLoC