根据已有的三维人脸数据,开发一款基于普通投影仪或显示器和普通相机的人机交互系统,要求
- 实现三维人脸的渲染和显示;
- 能识别相机前实时采集的面部表情,比如大笑、沮丧等;能根据面部表情变化对应调整三维人脸数据;
- 手掌交互,检查手掌到摄像头的距离对三维模型进行放大或缩小
pip install pygame PyOpenGL PyOpenGL_accelerate
pip install deepface tensorflow
pip install numpy
pip install opencv-python
pip install mediapipe cvzone
python3 main.py
by deepface
- face_detector.py
by pygame pyopengl
使用pyopengl
进行3d模型的加载
- obj_show.py
-
light.py 用于设置光照和相机
-
objloader.py 用于加载模型和纹理
You can use mouse to move, rotate and scale it. And you may set lighting for a better viewing. You need to be familiar with opengl.
(鼠标移动,自行设置光照,具体可以看代码)
See the code to learn more. (eg. I use pickle
to accelerate loading, obj.pkl 即缓存文件)
by mediapipe cvzone
根据手掌到摄像头的距离使三维人脸模型放大或缩小
原理:根据手掌某两点的距离与实际到摄像头的距离拟合一个关于x和y的函数, 再根据这个函数去判断距离
- hand_detector.py
-
pip 换源(也可以不换),然后依次安装上面的python库
-
配置opengl的环境
sudo apt-get install build-essential # 基本编译环境
sudo apt-get install libgl1-mesa-dev # opengl library
sudo apt-get install libglu1-mesa-dev # opengl utilities
sudo apt-get install libglut-dev # opengl utilities toolkit
需要注意的是:第四步可能会有报错,像如下
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package libglut-dev
这时将上述命令改为sudo apt-get install freeglut3-dev
即可.
- pyopengl运行不成功,error可能像这样
libGL error: MESA-LOADER: failed to open iris: /home/hosameldin/miniforge3/envs/robenv/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /usr/lib/dri/iris_dri.so) (search paths /usr/lib/dri)
libGL error: failed to load driver: iris
libGL error: MESA-LOADER: failed to open iris: /home/hosameldin/miniforge3/envs/robenv/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /usr/lib/dri/iris_dri.so) (search paths /usr/lib/dri)
libGL error: failed to load driver: iris
解决:参考链接
在
*shrc
配置文件中加入export LD_PRELOAD=/usr/lib/libstdc++.so.6 pyopengl
如果你用的是
win
, 参考这个链接