树莓派3B+使用CSI接口OV5647摄像头模块全攻略

前言

树莓派作为一款经典的微型计算机,其强大的GPIO和丰富的扩展接口使其成为物联网和嵌入式开发的明星产品。在众多外设中,‌OV5647摄像头模块‌凭借其500万像素、支持1080P视频录制等特性,成为树莓派视觉项目的热门选择。本文将手把手教你如何在‌树莓派3B+‌上通过CSI接口连接OV5647摄像头,完成硬件配置、驱动启用、拍照录像,并实现Python控制。

一、硬件准备与连接

所需材料

  • 树莓派3B+‌(其他型号如4B同样适用)
  • OV5647摄像头模块‌(带CSI排线)
  • 5V电源适配器
  • MicroSD卡(已刷入Raspberry Pi OS)

CSI接口连接步骤

  1. 关闭树莓派电源‌,避免带电操作损坏硬件。
  2. 找到树莓派主板上的‌CSI摄像头接口‌(位于HDMI和音频接口之间)。
  3. 轻轻拉起CSI接口的黑色卡扣至垂直状态。
  4. 将OV5647的排线‌金属触点面向HDMI接口‌插入CSI接口,确保完全插入。
  5. 按下黑色卡扣固定排线,完成物理连接。

在这里插入图片描述

二、系统配置与驱动启用

如果使用的是老版本,可以以下方法开启摄像头

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/


欢迎在评论区分享你的项目创意或遇到的问题!‌
(原创文章,转载请注明出处)‌


希望这篇指南能帮助您快速上手树莓派视觉开发!🎉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坏柠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值