# linux_demo **Repository Path**: lssssi/linux_demo ## Basic Information - **Project Name**: linux_demo - **Description**: linux环境编程仓库创建Demo程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-29 - **Last Updated**: 2026-07-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README <<<<<<< HEAD # AR虚拟宠物互动乐园 基于 OpenCV 人脸检测的实时头部运动驱动虚拟宠物互动系统。通过捕捉用户头部左右摇动,动态切换可爱的虚拟宠物,为直播场景增添趣味互动体验。 ## 产品介绍 想象这样一个场景: > 您正在进行直播,一只可爱的小兔子出现在画面中陪伴着您。当您向右摇头时,小兔子变成了活泼的小狗;当您向左摇头时,小狗又变成了萌萌的小猫。直播间的观众可以实时看到您与虚拟宠物的互动,增添了直播的趣味性和互动感。 应用场景 - **直播互动**: 为主播提供可爱的虚拟宠物助手,增加直播趣味性 - **在线教育**: 为远程教学增添互动元素 - **视频会议**: 在视频通话中添加个性化虚拟形象 - **娱乐体验**: 作为桌面虚拟宠物陪伴日常 ## 功能特性 - **实时人脸检测**: 基于 OpenCV Haar Cascade 分类器,快速准确检测人脸位置 - **头部运动识别**: 通过帧差法实时识别头部左右摇动,响应时间<100ms - **6种可爱宠物**: 兔子、小狗、小猫、小熊、熊猫、企鹅,各具特色动画 - **跳出特效**: 切换宠物时的缩放动画+光环扩散效果 - **流畅动画**: 基于正弦函数的弹跳、尾巴摇摆等动画效果 - **MJPEG视频流**: 支持浏览器远程访问,观众可实时观看 - **性能监控**: 实时显示 FPS、检测状态 ## 技术栈 | 技术 | 版本 | 用途 | |------|------|------| | **OpenCV** | 4.x | 人脸检测、图像处理、动画绘制 | | **nadjieb_mjpeg_streamer** | 最新 | MJPEG视频流输出 | | **CMake** | 3.10+ | 构建系统 | | **C++** | 14 | 开发语言 | ## 快速开始 ### 1. 依赖安装 ```bash Ubuntu/Debian sudo apt update sudo apt install -y build-essential cmake libopencv-dev ### 2. 编译 ```bash cd code mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j$(nproc) ### 3. 运行 ```bash 运行程序 ./run 按 `Ctrl+C` 退出程序。 ### 4. 访问方式 - **本地访问**: `http://localhost:8080/bgr` - **远程访问**: `http://192.168.198.130:8080/bgr` ## 操作说明 | 操作 | 效果 | |------|------| | **向右摇头** | 切换到下一个宠物 | | **向左摇头** | 切换到上一个宠物 | | **默认顺序** | 兔子 → 小狗 → 小猫 → 小熊 → 熊猫 → 企鹅 | ## 配置说明 ### 检测参数 | 参数 | 范围 | 效果 | 建议值 | |------|------|------|--------| | `movement_threshold` | 3-10 | 头部移动检测阈值(像素) | 5 | | `consecutive_frames` | 1-5 | 连续帧验证数量 | 2 | | `cooldown_frames` | 10-30 | 切换后冷却帧数 | 15 | ### 性能优化参数 | 参数 | 范围 | 效果 | 建议值 | |------|------|------|--------| | `frame_width` | 320-640 | 摄像头宽度 | 480 | | `frame_height` | 240-480 | 摄像头高度 | 360 | | `detection_interval` | 1-5 | 人脸检测间隔(帧数) | 3 | | `jpeg_quality` | 50-95 | MJPEG编码质量 | 85 | ## 性能指标 | 指标 | 数值 | |------|------| | 帧率 | 28-32 FPS | | 检测延迟 | <100ms | | CPU 占用 | ~40% | | 识别准确率 | ≥90% | ## 项目结构 AR虚拟宠物互动乐园/ ├── README.md # 项目说明 ├── docs/ # 文档目录 ├── images/ # 图片目录 │ ├── 项目设计说明书.md │ ├── git日志.pdf │ └── 演示视频.avi ├── AI 对话记录.md ├── code/# 源代码 ├── build/ # 构建目录 │ ├── models/ # 模型文件 │ └── haarcascade_frontalface_default.xml │ ├── MakeLCists.txt # 构建文件 │ ├── src/ │ │ ├── main.cpp # 主程序入口 │ │ ├── head_detector.cpp # 人脸检测与运动识别 │ │ └── animal_drawer.cpp # 动物绘制与动画 │ └── include/ │ ├── head_detector.h # 人脸检测器头文件 │ └── animal_drawer.h # 动物绘制器头文件 ## 核心算法 ### 人脸检测 系统采用 **OpenCV Haar Cascade 分类器** 进行人脸检测: ```cpp // 加载分类器 cv::CascadeClassifier face_cascade; face_cascade.load("models/haarcascade_frontalface_default.xml"); // 检测人脸 std::vectorcv::Rect faces; face_cascade.detectMultiScale(frame, faces, 1.1, 3, 0, cv::Size(30, 30)); ### 头部运动识别 采用 **帧差法 + 连续帧验证** 算法: ```cpp // 计算帧间人脸X坐标变化 int delta_x = current_face_x - last_face_x; // 判定条件 if (abs(delta_x) > 5 && consecutive_movement >= 2) { int direction = delta_x > 0 ? 1 : -1; // 1=右, -1=左 return direction; } ### 动画系统 基于 **正弦函数** 实现自然动画: ```cpp / 弹跳动画 int y_offset = amplitude * sin(frame_count * frequency); // 尾巴摇摆 int tail_angle = amplitude * sin(frame_count * frequency); ## 常见问题 ### Q: 检测不到人脸? 检查以下几点: 1. 确认摄像头工作正常 2. 调整摄像头位置,确保正面光照充足 3. 确保人脸在画面中占比足够大 ### Q: 画面卡顿? 调整以下参数: - 降低分辨率(如 480x360) - 增加检测间隔(如每3帧检测一次) - 降低JPEG编码质量 ### Q: 误判频繁? 调整以下参数: - 增大移动阈值(如从5增加到8) - 增加连续帧验证数量(如从2增加到3) - 延长冷却帧数(如从15增加到25) ## 开发路线图 - [x] Haar Cascade 人脸检测 - [x] 头部运动识别 - [x] 6种虚拟动物 - [x] 弹跳动画 - [x] 跳出特效 - [x] MJPEG视频流 - [ ] 多人人脸支持 - [ ] 更多动物类型 - [ ] 手势识别扩展 - [ ] 滤镜效果 ## 许可证 MIT License ## 致谢 - `https://opencv.org/` - 计算机视觉库 - `https://github.com/nadjieb/cpp-mjpeg-streamer` - MJPEG流库 ======= # Linux环境编程 - Git练习仓库 这是Linux环境编程课程的Git练习仓库。 ## 课程信息 - **课程名称**: Linux环境编程 - **学期**: 2025-2026学年春季学期 - **任课教师**: [教师姓名] ## 学生信息 - **姓名**: [你的姓名] - **学号**: [你的学号] - **Gitee用户名**: [你的Gitee用户名] ## 学习目标 通过本练习,你将掌握: 1. Git的基本概念和工作原理 2. 在Gitee上创建远程仓库 3. Git的基本操作:clone, add, commit, push, pull 4. 理解Git的三区概念:工作区、暂存区、仓库 5. 团队协作的基本流程 ## 仓库结构 ``` . ├── README.md # 本文件 ├── hello.c # 第一个练习程序 ├── CMakeLists.txt # CMake构建配置 └── docs/ # 课程文档目录 └── notes.md # 学习笔记 ``` ## 第一次作业 请按照课程要求完成以下任务: 1. 在Gitee上创建一个同名仓库 2. 将本仓库内容克隆到本地 3. 修改README.md,填入你的个人信息 4. 创建一个简单的hello.c程序 5. 提交并推送到Gitee ## 常用Git命令参考 ```bash # 查看当前状态 git status # 添加文件到暂存区 git add git add . # 添加所有修改 # 提交到本地仓库 git commit -m "提交说明" # 推送到远程仓库 git push # 从远程仓库拉取更新 git pull # 查看提交历史 git log # 查看文件差异 git diff ``` ## 学习资源 - [Git官方文档](https://git-scm.com/doc) - [Gitee帮助中心](https://gitee.com/help) 第三次提交的内容 >>>>>>> 5947c22ff49deace7e90c57f5ad1e0f9217b1690