树莓派3B摄像头的详细使用教程(拍照+录像+监控)

news2025/1/16 13:46:27

树莓派4B摄像头的详细使用教程(拍照+录像+监控)
本篇博文将介绍树莓派摄像头是如何在树莓派开发板上从安装到使用的,博主过程中参考了许多帖子,现将整理的比较全面的过程分享出来,供大家参考使用。

排线连接
硬件连接时我们首先需要使用树莓派摄像头FFC排线,连接树莓派摄像头与树莓派开发板。其中排线连接的接口被称为CSI(Camera Serial Interface)接口。

树莓派开发板的CSI接口位于USB和以太网接口旁边。我们先将CSI接口的黑色挡板拔开,之后将排线蓝色一端正对以太网接口方向插入,之后按下黑色挡板进行固定。

 用同样的方法连接摄像头一端,排线的蓝色端与摄像头背面保持相同方向。

 注意接线时务必保持电源断开。

摄像头功能的激活

首先打开树莓派终端,对树莓派进行更新:

sudo apt-get update
sudo apt-get upgrade

之后输入指令打开树莓派的配置界面:

sudo raspi-config

 按照以下步骤找到摄像头选项,打开树莓派的摄像头功能

 

 

 打开后使用reboot命令重启树莓派,至此摄像头已经能够在树莓派上使用啦.

拍照功能

想使用树莓派摄像头拍照很简单,在终端输入命令即可。这里使用的是树莓派系统中的raspistill命令

raspistill -o a.jpg -t 1000

这行命令的作用是在一秒钟的延迟之后,拍下一张名为a.jpg的照片,保存在树莓派的主目录下。-t的延迟选项后的参数是以毫秒为单位,1000便表示1秒。延时选项在输入命令时可以不加,但-o后的名称是一定要有的。下面放一张效果图:

要学习其参数及命令:(更多参数使用raspistill --help

-w, –width : 设置图像宽度 <尺寸>
-h, –height : 设置图像高度 <尺寸>
-q, –quality : 设置jpeg品质 <0到100>
-t, –timeout : 拍照和关闭时的延时指定,未指定时默认是5s,毫秒为单位,1000便表示1秒
-o, –output : 输出文件名 <文件名>,如果要写到stdout,使用-o -,如果不特别指定,图像文件不会被保存
-rot:图像旋转角度,只支持 0、90、180、270 度
专业摄影参数:

曝光参数:

-ss:后跟的是微秒
-ss 9000000:9s
-ISO 125:感光
-ex verylong:焦距,无限远;
-awb off:自动白平衡,awb:auto white balance

-awbg 1,1
-bm(burst mode), –burst : 运行burst capture mode

延时拍摄参数:

-tl(–timelapse ):raspistill 进入 -tl 模式,则排到的便不是一副图像,而是通过一定的时间间隔的多幅图像;
注意:

照片将会保存在当前路径下,使用MobaXterm可以传输到windows桌面打开
参考博文:

【树莓派】简单配置CSI摄像头

树莓派进阶之路 (018) - raspberryPi摄像头命令行软件raspistill帮助文档

 录像功能

同样是使用输入命令的方式实现。命令如下:

raspivid -o b.h264 -t 10000 -w 1280 -h 720

该命令的意思是录制一段十秒钟的名为b.h264的视频,且分辨率为1280x720。同样,如果不带名称后的参数的话,系统会默认录制时间为5秒,分辨率为1920x1080。
此时录制的视频虽然能够在树莓派上播放,但并非是能够在一般播放器上运行的常规视频文件,且录制的视频是没有声音的。要想将.h264格式的视频转换为mp4格式的视频,需要使用一个叫做gpac的工具。

sudo apt-get install -y gpac

 安装后输入以下命令对刚才的视频进行格式转换,转换后的视频为每秒30帧。

MP4Box -fps 30 -add b.h264 b.mp4

监控功能

简介:Motion是Linux下一款轻量级的监控软件。在日常工作模式下,Motion可以提供网络摄像头的功能。当拍摄过程中画面发生变动时,Motion可以保存动作发生时的图片和视频。

输入命令进行安装:

sudo apt-get install motion

首先将motion软件的后台进程改为开启,让它能够一直在后台运行。输入以下命令,将文件中 “start_motion_daemon=no” 的no改为yes。执行 CTRL + O 并按 ENTER 保存更改,按 CTRL + X退出

sudo nano /etc/default/motion

之后输入命令打开motion的配置文件:

sudo nano /etc/motion/motion.conf

这个文件中保存了许多motion的基本设置,文件内容很多,感兴趣的话可以慢慢研究。因为选项比较多,下面只写出一些比较重要的选项的值,其他可以用默认值,或者参考motion官网上的documents,那里面写得很详尽,每个参数的解释都有。motion.conf里自带的注释也很完整。

daemon on  				#off改成on,在后台运行。设置为off将在前台运行
width 640  
height 480 				#摄像头像素宽高
framerate 50 				#帧率fps,解决卡顿问题
stream_maxrate 100 				#默认是1,不改的话监控视频会很卡,将其参数改大
stream_localhost off    			#设为off,允许外网访问视频流(on为不允许)

#如果要检测到运动的物体可以加:
locate_motion_mode on 			#将off修改为on,探测到实时视频中有物体运动时,运动区域被矩形框起来

#如果要修改视频流端口:
stream_port 8081 			#端口号

#如果要修改Motion存储文件的目标文件夹
target_dir /var/lib/motion 			 #所存储文件包括了运动捕捉产生的图片或视频,用户motion必须对该目标文件夹有写入权限

#通过motion可以实现当监控到有运动物体时,截取图片。
output_pictures best # 将off改为best,还可以选first和center

当然要想获得最佳的效果,文档中的参数需要多次根据自己的设备进行相应的调整。
修改完成后保存并退出。

若你之前打开过motion,那么在每次更改完配置后,需要先关闭motion进程,并再次打开,相当于对motion进行一次重启。关闭motion服务的命令如下:

sudo killall -TERM motion

接着输入命令重新打开motion: 

sudo motion

motion运行成功打印:

[0:motion] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf
[0:motion] [ALR] [ALL] conf_cmdparse: Unknown config option "
"
[0:motion] [NTC] [ALL] motion_startup: Logging to file (/var/log/motion/motion.log)

打开后便可以通过在浏览器内访问地址http://树莓派IP:8080,看到相应的监控画面了。

可以设置开机自动启动motion,执行下面命令,在exit 0前添加 motion

sudo nano /etc/rc.local

场景1:

    如果在浏览器访问显示灰色内容且摄像头也没亮,说明少驱动bcm2835-v4l2

执行cat /etc/modules查看modules是否包含bcm2835-v4l2

 如果没有则按照如下解决方法:查看下面的《添加UVC驱动》

原因分析:

 添加UVC驱动

有些程序采用V4L2编程,会访问到/dev/videoX设备,因此需要添加UVC驱动,针对树莓派3B/3B+可以采用如下的方法添加bcm2835-v4l2驱动:

执行

sudo vim.tiny /etc/modules在最后一行添加bcm2835-v4l2
pi@raspberrypi:~$ sudo vim.tiny /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

i2c-dev
bcm2835-v4l2

然后重启即可在/dev/目录下看到videoX(X为数字编号,如0)的驱动

场景2:

报错:Failed to run camera app. Please check for firmware updates

报错具体内容如下:

mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
mmal: camera component couldn't be enabled
mmal: main: Failed to create camera component
mmal: Failed to run camera app. Please check for firmware updates

原因分析:

查了很多资料,教程说:树莓派有进程没有kill,但是找了好多不知道到底是什么进程没有kill

解决方案:

原来试错好久,之前安装了motion,设置成后台运行监控模块。我运行了如下命令:

sudo killall -TERM motion

再次创建照片,运行如下命令:

sudo raspistill -o 123.jpg

问题解决。

后来我直接把;motion后台运行给关了,免得下次再次出现这种问题:

sudo nano /etc/default/motion

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【阶段二】Python数据分析数据可视化工具使用02篇:条形图与雷达图

本篇的思维导图: 条形图 条形图与柱形图类似,几乎可以表达相同多的数据信息。条形图的柱形变为横向,从而导致与柱形图相比,条形图更加强调项目之间的大小对比。尤其在项目名称较长以及数量较多时,采用条形图可视化数据会更加美观、清晰。 代码 # 导入需要的包imp…

java学习day70(乐友商城)授权中心

1.无状态登录原理 1.1.什么是有状态&#xff1f; 有状态服务&#xff0c;即服务端需要记录每次会话的客户端信息&#xff0c;从而识别客户端身份&#xff0c;根据用户身份进行请求的处理&#xff0c;典型的设计如tomcat中的session。 例如登录&#xff1a;用户登录后&#x…

cubeIDE开发, stm32的C库应用分析

一、stm32的C库 cubeIDE针对STM32芯片开发&#xff0c;提供个了两大库&#xff0c;HLA库和C库&#xff08;集成GNU Tools for STM32工具链时提供&#xff0c;该工具链同样是意法半导体提供&#xff0c;可在http:// www.st.com单独下载&#xff09;&#xff0c;前者帮助开发这简…

P1055 [NOIP2008 普及组] ISBN 号码————C++

文章目录题目[\[NOIP2008 普及组\] ISBN 号码](https://www.luogu.com.cn/problem/P1055)题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2提示解题思路1Code运行结果解题思路2Code运行结果题目 [NOIP2008 普及组] ISBN 号码 题目描述 …

windows 安装jenkins运行发布vue项目到linux服务器

文章目录背景安装jenkins安装插件安装nodej插件Publish over SSH系统配置Publish over SSH全局工具配置设置node构建项目创建一个freestyle的项目Discard old buildsgit命令报错Host key verification failedBuild背景 由于服务器上运行jenkins很卡&#xff0c;所以对于小公司…

windows安装jenkins运行发布java springboot项目到linux服务器

文章目录背景安装jenkins安装插件安装maven插件Publish over SSH系统配置Global propertiesPublish over SSH全局工具配置设置jdk设置maven设置git构建java maven项目freestyle 或者maven都可以Discard old buildsgit命令报错Host key verification failed每次构建前清理构建环…

可观测性之Log4j2优雅日志打印

可观测性之Log4j2优雅日志打印# 简介 对于Log4j2大家应该都不是很陌生&#xff0c;听说最多的应该是2021年年底出现的安全漏洞了&#xff0c;不过最让大家头痛的应该不仅仅是这个安全漏洞的处理&#xff0c;安全漏洞通过升级最新的依赖版本即可快速解决&#xff0c;平时在使用…

基于Java+SpringMvc+vue+element实现上海汽车博物馆平台

基于JavaSpringMvcvueelement实现上海汽车博物馆平台 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源…

C语言.表白神器.爱你之心之闪耀

前言 爱你之心之闪耀&#xff0c;这个名字比较沙雕哈哈哈。。。 爱你之心之闪耀前言爱心函数的选取爱心函数1爱心函数2简单爱心粒子发射原理爱心结构一些宏初始化init创建若干爱心并初始化setHeart展示爱心showHeart爱心变大modifyHeart设置音乐主函数Love.hLove.cpp祝有情人&a…

【有营养的算法笔记】一文轻松学会高精度算法(加减乘除)

&#x1f451;作者主页&#xff1a;进击的安度因 &#x1f3e0;学习社区&#xff1a;进击的安度因&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;有营养的算法笔记 文章目录一、前言二、高精度加法1、思想及模板2、代码实现三、高精度减法1、思路及模板2…

电脑一键重装系统卡在正在准备就绪怎么办

最近有些用户想要给电脑换新的系统使用&#xff0c;选择一键重装工具重装&#xff0c;但结果卡住了&#xff0c;小白一键重装系统卡在正在准备就绪怎么办?下面小编就教下大家小白一键重装系统卡在正在准备就绪怎么办的解决办法。 工具/原料&#xff1a; 系统版本&#xff1a;…

七 近代史案例欣赏

首先打开我们的编译器&#xff0c;EgretWing,新建一个Egret项目。 新建好后如下图&#xff1a; 主要文件夹介绍 libs:包类文件夹 resource&#xff1a;资源文件夹 src&#xff1a;编写代码文件夹 template&#xff1a;前端文件夹 代码编写 1 打开src中Main.ts文件找到crea…

Scala中的协变点、逆变点、不变点如何确定?

阅读《scala编程》时&#xff0c;我们知道了类的类型参数是可以型变&#xff08;variance&#xff09;的。型变包含以下三种&#xff1a; 协变&#xff08;convariant&#xff09;&#xff1a;如果S是T的子类型&#xff0c;则C1[S]也是C1[T]的子类型&#xff0c;则称C1在类型参…

leetcode 208. 实现 Trie (前缀树)【字典树(前缀树)的介绍与思路整理】

题目 Trie&#xff08;发音类似 “try”&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补完和拼写检查。 请你实现 Trie 类&#xff1a; Trie() 初始化前缀树对象。…

HCL Notes/Domino 12.0.2版本正式发布

大家好&#xff0c;才是真的好。 之前代号为多瑙河版本的Notes/Domino产品&#xff0c;昨天晚上正式露出了神秘的面纱&#xff0c;版本号也正式定为12.0.2。从版本上来看&#xff0c;是12.0版本的小版本&#xff0c;但从功能和特性上来说&#xff0c;这完全就是一个大版本。 …

Duboo优雅关闭(附源码分析)

Dubbo优雅关闭 1. 关闭有什么问题 当服务提供方要上线的时候&#xff0c;一般是通过部署系统完成实例重启。在这个过程中&#xff0c;服务提供方的团队并不会事先告诉调用方他们需要操作哪些机器&#xff0c;从而让调用方去事先切走流量。而对调用方来说&#xff0c;它也无法…

LeetCode刷题复盘笔记—一文搞懂动态规划之72. 编辑距离问题(动态规划系列第四十一篇)

今日主要总结一下动态规划的一道题目&#xff0c;72. 编辑距离 题目&#xff1a;72. 编辑距离 Leetcode题目地址 题目描述&#xff1a; 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&…

FME对调查云平台完成变更调查照片的批量迁移

目录 前言 二、实际步骤 1.准备基础数据 2.模拟登录 3.获取图斑标识码 4.获取图形信息 5.通过空间位置关系过滤不合格照片 5.通过深度学习模型过滤照片特征错误图斑 6.照片迁移 总结 前言 又到了一年一度国土变更调查的苦日子&#xff0c;因为项目规则原因&#xff0c;…

【架构设计】你的应用该如何分层呢?

前言 最近review公司的代码&#xff0c;发现现在整个代码层级十分混乱&#xff0c;一个service类的长度甚至达到了5000多行。而且各种分层模型DTO、VO乱用&#xff0c; 最终出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动一处就牵一发而动全身等问题。 我们在吸取了阿里…

spring之aop底层实现

1.aop之ajc增强 什么是ajc增强&#xff1f; ajc是aop的另外一种实现&#xff0c; 通过aspectj编码器来改动class源文件实现aop 2.aop之agent增强 什么是agent增强&#xff1f; agent是aop的另外一种实现&#xff0c;是通过类加载时改动class类 3.aop之proxy增强-jdk代理 …