# camera-pi **Repository Path**: xiaobenniao1012/camera-pi ## Basic Information - **Project Name**: camera-pi - **Description**: 远程控制树莓派摄像功能 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-13 - **Last Updated**: 2025-06-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Camera Pi 树莓派相机控制服务,提供拍照和视频预览功能。 ## 功能特性 - 拍照功能:支持高分辨率拍照(1280x720) - 视频预览:支持实时视频流(30fps,1280x720) - 日志记录:详细的运行日志 - 系统服务集成:支持开机自启 - 资源管理:自动清理相机资源 - 开发支持:支持热部署,代码修改自动重启 ## 系统要求 - 硬件要求: - Raspberry Pi(推荐 3B+ 或更新版本) - 树莓派相机模块(支持 libcamera) - 软件要求: - Raspberry Pi OS(推荐 Bullseye 或更新版本) - Python 3.7+ - libcamera 工具 - 2GB 以上可用内存 ## 安装步骤 ### 1. 安装系统依赖 ```bash # 更新系统 sudo apt-get update sudo apt-get upgrade -y # 安装必要的系统包 sudo apt-get install -y python3-pip python3-opencv libcamera-tools git # 安装 语音合成引擎 sudo apt-get install espeak # 语音识别 # pip install vosk soundfile -i http://mirrors.aliyun.com/pypi/simple pip install soundfile -i http://mirrors.aliyun.com/pypi/simple ``` ### 2. 安装 Python 依赖 ```bash # 安装项目依赖 pip3 install -r requirements.txt # 安装开发依赖(可选,用于热部署) pip install flask-debugtoolbar watchdog -i http://mirrors.aliyun.com/pypi/simple ``` ### 3. 用户和权限配置 ```bash # 创建 video 组(如果不存在) sudo groupadd video # 创建 camera 用户 sudo useradd -m -s /bin/bash camera # 将用户添加到 video 组 sudo usermod -a -G video camera # 设置用户密码 sudo passwd camera # 配置相机设备权限 sudo chown root:video /dev/video0 sudo chmod 660 /dev/video0 # 创建并配置日志目录 sudo mkdir -p /var/log/camera-pi sudo chown -R camera:camera /var/log/camera-pi ``` ### 4. 部署应用 ```bash # 切换到 camera 用户 sudo su - camera # 克隆代码 git clone https://github.com/yourusername/camera-pi.git cd camera-pi # 创建必要的目录 mkdir -p ~/camera-pi/logs mkdir -p ~/camera-pi/photos ``` ### 5. 配置系统服务 ```bash # 复制服务文件 sudo cp camera-pi.service /etc/systemd/system/ # 重新加载 systemd 配置 sudo systemctl daemon-reload # 启动服务 sudo systemctl start camera-pi # 设置开机自启 sudo systemctl enable camera-pi ``` ## 使用方法 ### 1. 访问网页界面 - 打开浏览器访问:`http://树莓派IP:5000` - 功能按钮: - 拍照:点击"拍照"按钮进行拍照 - 预览:点击"预览"按钮查看实时视频流 - 查看照片:点击"查看照片"浏览已拍摄的照片 ### 2. 服务管理 ```bash # 查看服务状态 sudo systemctl status camera-pi # 启动服务 sudo systemctl start camera-pi # 停止服务 sudo systemctl stop camera-pi # 重启服务 sudo systemctl restart camera-pi ``` ### 3. 日志查看 ```bash # 查看实时日志 tail -f /var/log/camera-pi/camera-pi.log # 查看系统服务日志 journalctl -u camera-pi -f ``` ### 4. 开发模式 ```bash # 设置开发环境 export FLASK_ENV=development # 启动开发服务器(支持热重载) python app.py ``` 开发模式下支持以下功能: - 代码修改自动重启 - Flask Debug Toolbar 调试工具 - 详细的错误信息显示 - 模板文件自动重载 ### 5. 生产模式 ```bash # 设置生产环境 export FLASK_ENV=production # 启动生产服务器 python app.py ``` ## 故障排除 ### 1. 权限问题 ```bash # 检查用户组 groups camera # 检查相机设备权限 ls -l /dev/video* # 重新配置权限 sudo chmod 666 /dev/video0 sudo usermod -a -G video camera ``` ### 2. 相机访问问题 ```bash # 检查相机是否被识别 libcamera-still --list-cameras # 检查相机进程 ps aux | grep libcamera # 强制终止相机进程 sudo pkill -f libcamera ``` ### 3. 扬声器访问 查看所有可用的音频设备 ``` aplay -L ``` 如果你用的是树莓派的3.5mm耳机孔(插孔),一般是bcm2835 Headphones(hw:CARD=Headphones,DEV=0)。 如果你用的是HDMI线连接的显示器自带扬声器,则是vc4hdmi0或vc4hdmi1。 3.5mm插孔扬声器:用sysdefault:CARD=Headphones HDMI扬声器:用sysdefault:CARD=vc4hdmi0或sysdefault:CARD=vc4hdmi1 测试设备 ``` aplay -D sysdefault:CARD=Headphones /usr/share/sounds/alsa/Front_Center.wav ``` 设置音量 ``` amixer set PCM 100% ``` ### 4. 服务问题 ```bash # 检查服务状态 sudo systemctl status camera-pi # 检查错误日志 journalctl -u camera-pi -f # 重启服务 sudo systemctl restart camera-pi ``` ## 项目结构 ``` camera-pi/ ├── app/ # 应用主目录 │ ├── __init__.py # 应用初始化 │ ├── routes.py # 路由定义 │ └── utils.py # 工具函数 ├── camera/ # 相机控制模块 │ ├── __init__.py │ └── manager.py # 相机管理 ├── static/ # 静态文件 ├── templates/ # 模板文件 ├── app.py # 应用入口 ├── config.py # 配置文件 ├── camera-pi.service # 系统服务配置 ├── requirements.txt # Python依赖 └── README.md # 项目文档 ``` ## 开发说明 ### 热部署功能 项目支持热部署,当以下文件发生变更时会自动重启服务器: - Python源代码文件(.py) - 模板文件(.html) - 配置文件(config.py) ### 调试工具 开发模式下可以使用Flask Debug Toolbar进行调试: - 查看请求信息 - 检查SQL查询 - 分析性能瓶颈 - 查看配置信息 ### 日志记录 - 开发日志:`logs/camera_pi.log` - 系统服务日志:`journalctl -u camera-pi -f` ## 卸载 ```bash # 停止并禁用服务 sudo systemctl stop camera-pi sudo systemctl disable camera-pi # 删除服务文件 sudo rm /etc/systemd/system/camera-pi.service sudo systemctl daemon-reload # 删除用户和文件 sudo userdel -r camera sudo groupdel video # 删除应用文件 sudo rm -rf /home/camera/camera-pi ``` ## 许可证 MIT License ## 待完善 1、视频监控、拍照、调取归档 2、视频归档、报警设置 3、声音监控(哭声)、人脸识别 4、低照度图像增强 5、MediaPipe手势识别实现缩放/暂停等操作 视频监控:支持动态人物检测 开发环境向树莓派上拷贝文件 ``` # scp -r ~/work/camera-pi edward@192.168.0.105:~/work/ rsync -av --exclude '.git' --exclude '__pycache__' --exclude '*.pyc' ~/work/camera-pi/ edward@192.168.0.105:~/work/camera-pi/ ```