【树莓派4B】Manjaro-ARM配置CSI摄像头

参考:[树莓派]aarch64系统使用CSI摄像头

1.修改配置

由于此系统没有raspi-config ,rpi-update等,所以需要自己修改/boot/config.txt来增加摄像头

start_x=1             # essential
gpu_mem=128           # at least, or maybe more if you wish
disable_camera_led=1  # optional, if you don't want the led to glow

读取bcm2835-v4l2模块

modprobe bcm2835-v4l2

配置开机自动加载

sudo echo 'bcm2835-v4l2' >> sudo  /etc/modules

2.重启

系统重启后,会出现一个/dev/video0的设备,执行下文命令不会报错即安装成功

ls /dev/video0

3.多路访问

此时,摄像头只能被一个进程访问,如果希望多进程同时访问,可以执行以下步骤。没有此需求则跳过

1. 安装回路驱动
yay -S v4l2loopback-dkms
2. 创建/dev/video1
modprobe v4l2loopback video_nr=1

配置开机自动创建

echo 'options v4l2loopback video_nr=1' > sudo /etc/modprobe.d/v4l2loopback.conf
3. 流转向

以下操作任意一个即可

  • v4l2tools
  • ffmpeg
  • gstreamer

这里我使用ffmpeg将video0转向到多路video1

yay -S ffmpeg

ffmpeg -f video4linux2 -i /dev/video0 -vcodec copy -f v4l2 /dev/video1

4.安装pip3和opencv

sudo pacman -S python-pip
pip install opencv-python  -i https://pypi.tuna.tsinghua.edu.cn/simple

5.测试摄像头

import cv2 as cv

# 读取设备
cap = cv.VideoCapture('/dev/video0', cv.CAP_V4L)
# 读取摄像头FPS
fps = cap.get(cv.CAP_PROP_FPS)

# set dimensions 设置分辨率
cap.set(cv.CAP_PROP_FRAME_WIDTH, 800)
cap.set(cv.CAP_PROP_FRAME_HEIGHT, 400)

video = cv.VideoWriter('video.avi', cv.VideoWriter_fourcc('I', '4', '2', '0'), fps, (800, 400)) # 初始化文件写入 文件名 编码解码器 帧率 文件大小

# 录制10帧
for i in range(500):
    # take frame 读取帧
    ret, frame = cap.read()
    if ret:
        #write frame to file
        #cv.imwrite('image-{}.jpg'.format(i), frame) # 截图
        #cv.imshow("camera",frame) # 这里有问题暂时未解决
        #cv.waitKey(2)
        video.write(frame) # 录制视频
        print(i)

# release camera 必须要释放摄像头
cap.release()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Shine.Zhang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值