前言
树莓派作为一款经典的微型计算机,其强大的GPIO和丰富的扩展接口使其成为物联网和嵌入式开发的明星产品。在众多外设中,OV5647摄像头模块凭借其500万像素、支持1080P视频录制等特性,成为树莓派视觉项目的热门选择。本文将手把手教你如何在树莓派3B+上通过CSI接口连接OV5647摄像头,完成硬件配置、驱动启用、拍照录像,并实现Python控制。
一、硬件准备与连接
所需材料
- 树莓派3B+(其他型号如4B同样适用)
- OV5647摄像头模块(带CSI排线)
- 5V电源适配器
- MicroSD卡(已刷入Raspberry Pi OS)
CSI接口连接步骤
- 关闭树莓派电源,避免带电操作损坏硬件。
- 找到树莓派主板上的CSI摄像头接口(位于HDMI和音频接口之间)。
- 轻轻拉起CSI接口的黑色卡扣至垂直状态。
- 将OV5647的排线金属触点面向HDMI接口插入CSI接口,确保完全插入。
- 按下黑色卡扣固定排线,完成物理连接。
二、系统配置与驱动启用
如果使用的是老版本,可以以下方法开启摄像头
1. 启用摄像头接口
通过SSH或桌面终端执行以下命令:
sudo raspi-config
选择 Interfacing Options → Camera → Yes
启用摄像头支持,重启生效。
2. 验证摄像头识别
重启后执行:
vcgencmd get_camera
若返回 supported=1 detected=1 表示摄像头已正确识别。
如果出现supported=1 detected=0
可尝试进行如下操作
ls /dev/video*
正常情况下,我们的摄像头设备应该是/dev/video0设备端口,
但是,如果摄像头没有识别到,是没有video0的,同时会出现supported=1 detected=0的情况
三、基础功能测试
1. 拍摄静态照片
使用 raspistill 命令测试拍照:
sudo raspistill -o test.jpg -t 2000 -w 1280 -h 720
-o 指定输出文件名
-t 设置2秒后拍摄(留出调整时间)
-w/-h 设置分辨率
libcamera-hello 命令相当于相机的 “hello world” 应用程序。它启动相机,显示预览窗口,而不执行任何其他操作。例如:
libcamera-hello
应显示预览窗口约 5 秒钟。-t 选项允许用户选择窗口的显示时间长度,其中 以毫秒为单位。若要无限期运行预览,请使用:
libcamera-hello -t 0
可以通过单击窗口的关闭按钮或在终端中使用 Ctrl-C 来停止预览。
2. 录制视频
使用 raspivid 录制10秒视频:
raspivid -o test.h264 -t 10000
转换为MP4格式(需安装 gpac):
MP4Box -add test.h264 test.mp4
四、Python控制摄像头
安装Picamera库
sudo apt install -y python3-picamera2
Python拍照脚本示例
创建 capture.py:
import picamera2
from time import sleep
camera = picamera2.Picamera2()
camera.resolution = (1280, 720)
camera.rotation = 180 # 旋转画面(可选)
camera.start()
sleep(2) # 给传感器留出曝光时间
camera.capture_file('python_photo.jpg')
camera.stop()
录制视频脚本
camera.start_preview()
camera.start_recording('video.h264')
sleep(10)
camera.stop_recording()
camera.stop_preview()
五、高级应用场景
1. 延时摄影
间隔10秒拍摄一次,持续1小时:
for i in range(360):
camera.capture(f'timelapse_{i:04d}.jpg')
sleep(10)
2. 视频流传输
使用OpenCV实时处理画面:
import cv2
from picamera.array import PiRGBArray
camera.resolution = (640, 480)
raw_capture = PiRGBArray(camera, size=(640,480))
for frame in camera.capture_continuous(
raw_capture, format="bgr", use_video_port=True):
image = frame.array
cv2.imshow("Live Feed", image)
raw_capture.truncate(0)
if cv2.waitKey(1) == ord('q'):
break
六、常见问题排查
1. 摄像头未识别
检查CSI排线是否完全插入且方向正确
确认 /boot/config.txt 或者,/boot/firmware/config.txt包含:
start_x=1
gpu_mem=128
更新系统:sudo apt update && sudo apt full-upgrade
2. 图像模糊/偏色
移除摄像头保护膜
调整对焦(部分OV5647带手动对焦环)
调节白平衡:
camera.awb_mode = 'sunlight' # 可选模式:tungsten, fluorescent等
3. 权限问题
将用户加入 video 组:
sudo usermod -aG video pi
七、结语
通过本文指导,您已成功在树莓派3B+上实现了OV5647摄像头的完整控制。无论是简单的拍照录像,还是结合AI的复杂视觉应用,这个低成本方案都为您的创意提供了无限可能。下一步可尝试:
- 结合TensorFlow Lite实现人脸识别
- 搭建基于Flask的视频监控平台
- 开发智能安防系统
资源推荐:
官方Picamera文档:https://picamera.readthedocs.io/en/release-1.13/
OpenCV树莓派优化指南:https://pyimagesearch.com/
欢迎在评论区分享你的项目创意或遇到的问题!
(原创文章,转载请注明出处)
希望这篇指南能帮助您快速上手树莓派视觉开发!🎉