当前位置: 首页 > news >正文

树莓派超全系列教程文档--(60)树莓派摄像头操作命令及使用其一

树莓派摄像头操作命令及使用

      • `rpicam-hello`
        • 显示图像预览
      • `rpicam-jpeg`
      • `rpicam-still`
        • 编码器
        • 捕获原始图像
        • 捕捉长时间曝光
        • 创建延时视频
          • 使用 `rpicam-still` 延时模式
          • 通过 `cron`
          • 将图像拼接在一起

文章来源: http://raspberry.dns8844.cn/documentation

原文网址

rpicam-hello

rpicam-hello 会显示一个来自相机的视频的预览窗口。要使用 rpicam-hello 显示预览窗口五秒钟,请在终端中运行以下命令:

$ rpicam-hello

您可以使用 timeout 选项设置预览时间(以毫秒为单位)。值 0 无限期运行预览:

$ rpicam-hello --timeout 0

使用终端中的 Ctrl+C 或预览窗口上的关闭按钮停止 rpicam-hello

显示图像预览

大多数 rpicam-apps 会在窗口中显示预览图像。如果没有活动的桌面环境,则使用Linux直接渲染管理器(DRM)将预览直接绘制到显示器上。否则,rpicam-apps 会尝试使用桌面环境。两条路径都使用零拷贝GPU缓冲区共享:因此, 支持X转发。

如果您运行X窗口服务器并希望使用X转发,请使用 qt-preview 参数以在 Qt 窗口中呈现预览窗口。Qt预览窗口将会比替代窗口使用更多资源。

NOTE: 使用Gtk2的旧系统在与OpenCV链接时可能会产生 Glib-GObject 错误并且无法显示Qt预览窗口。在这种情况下,以root身份编辑文件 /etc/xdg/qt5ct/qt5ct.conf 并将 style=gtk2 替换为 style=gtk3

要完全禁止预览窗口,请使用 nopreview 选项:

$ rpicam-hello -n

info-text 选项使用 % 指令在窗口标题栏上显示图像信息。例如,以下命令显示当前的红色和蓝色增益值:

$ rpicam-hello --info-text "red gain %rg, blue gain %bg"

有关指令的完整列表,请参阅 info-text信息。

rpicam-jpeg

rpicam-jpeg 可帮助您在Raspberry Pi设备上捕获图像。

要捕获全分辨率JPEG图像并将其保存到名为 test.jpg 的文件中,请运行以下命令:

$ rpicam-jpeg --output test.jpg

您应该会看到五秒钟的预览窗口。然后,rpicam-jpeg 捕获全分辨率JPEG图像并保存它。

使用 timeout 选项更改预览窗口的显示时间。width和height 选项更改保存图像的分辨率。例如,以下命令将预览窗口显示2秒,然后捕获并保存分辨率为640×480像素的图像:

$ rpicam-jpeg --output test.jpg --timeout 2000 --width 640 --height 480

rpicam-still

rpicam-stillrpicam-jpeg 一样,可以帮助你在 Raspberry Pi 设备上捕捉图像。
rpicam-jpeg 不同, rpicam-still 支持传统 raspistill 应用程序中提供的许多选项。

要捕获全分辨率JPEG图像并将其保存到名为 test.jpg 的文件中,请运行以下命令:

$ rpicam-still --output test.jpg
编码器

rpicam-still 可以以多种格式保存图像,包括 pngbmp 以及RGB和YUV二进制像素转储。要读取这些二进制转储,任何读取文件的应用程序都必须了解像素排列。

使用 encoding 选项指定输出格式。传递给 output 的文件名对输出文件类型没有影响。

要捕获全分辨率PNG图像并将其保存到名为 test.png 的文件中,请运行以下命令:

$ rpicam-still --encoding png --output test.png

有关指定图像格式的更多信息,请参阅 encoding 选项参考。

捕获原始图像

原始图像是由图像传感器直接生成的图像,然后再由图像信号处理器(ISP)或中央处理器进行处理。彩色图像传感器通常使用 Bayer 格式。使用 raw 选项可捕捉原始图像。

要捕获图像,请将其保存到名为 test.jpg 的文件中,并将图像的原始版本保存到名为 test.dng 的文件中,请运行以下命令:

$ rpicam-still --raw --output test.jpg

rpicam-still 以DNG(Adobe Digital Negative)格式保存原始图像。要确定原始图像的文件名,rpicam-still 使用与输出文件相同的名称,扩展名更改为 .dng 。要处理DNG图像,请使用 Dcraw 或 RawTherapee 等应用程序。

DNG元数据包括电平、白平衡信息以及ISP用于生成JPEG的色彩矩阵。使用 ExifTool 查看 DNG 元数据。以下输出显示了存储在 Raspberry Pi 使用 HQ 摄像机拍摄的原始图像中的典型元数据:

File Name                       : test.dng
Directory                       : .
File Size                       : 24 MB
File Modification Date/Time     : 2021:08:17 16:36:18+01:00
File Access Date/Time           : 2021:08:17 16:36:18+01:00
File Inode Change Date/Time     : 2021:08:17 16:36:18+01:00
File Permissions                : rw-r--r--
File Type                       : DNG
File Type Extension             : dng
MIME Type                       : image/x-adobe-dng
Exif Byte Order                 : Little-endian (Intel, II)
Make                            : Raspberry Pi
Camera Model Name               : /base/soc/i2c0mux/i2c@1/imx477@1a
Orientation                     : Horizontal (normal)
Software                        : rpicam-still
Subfile Type                    : Full-resolution Image
Image Width                     : 4056
Image Height                    : 3040
Bits Per Sample                 : 16
Compression                     : Uncompressed
Photometric Interpretation      : Color Filter Array
Samples Per Pixel               : 1
Planar Configuration            : Chunky
CFA Repeat Pattern Dim          : 2 2
CFA Pattern 2                   : 2 1 1 0
Black Level Repeat Dim          : 2 2
Black Level                     : 256 256 256 256
White Level                     : 4095
DNG Version                     : 1.1.0.0
DNG Backward Version            : 1.0.0.0
Unique Camera Model             : /base/soc/i2c0mux/i2c@1/imx477@1a
Color Matrix 1                  : 0.8545269369 -0.2382823821 -0.09044229197 -0.1890484985 1.063961506 0.1062747385 -0.01334283455 0.1440163847 0.2593136724
As Shot Neutral                 : 0.4754476844 1 0.413686484
Calibration Illuminant 1        : D65
Strip Offsets                   : 0
Strip Byte Counts               : 0
Exposure Time                   : 1/20
ISO                             : 400
CFA Pattern                     : [Blue,Green][Green,Red]
Image Size                      : 4056x3040
Megapixels                      : 12.3
Shutter Speed                   : 1/20

要找到模拟增益,请将ISO数除以100。
自动白平衡(AWB)算法确定一个单一的校准光源,该光源始终标为 “D65”。

捕捉长时间曝光

要拍摄长时间曝光的图像,请禁用自动曝光/增益控制 (AEC/AGC) 和自动白平衡 (AWB)。否则,这些算法将迫使用户在收敛时等待若干帧。

要禁用这些算法,请为增益和 AWB 提供明确的值。由于长时间曝光已经耗费了大量时间,可以使用 immediate 选项完全跳过预览阶段。

要执行100秒曝光捕获,请运行以下命令:

$ rpicam-still -o long_exposure.jpg --shutter 100000000 --gain 1 --awbgains 1,1 --immediate

要查找 Raspberry Pi 官方摄像头的最大曝光时间,请参阅 摄像头硬件规格。

创建延时视频

要创建延时视频,请定期捕获静止图像,例如一分钟一次,然后使用应用程序将图片拼接成视频。

使用 rpicam-still 延时模式

要使用内置的延时模式 rpicam-still ,请使用 timelapse 选项。此选项接受一个值,该值表示您希望Raspberry Pi在两次捕获之间等待的时间,以毫秒为单位。

首先,创建一个目录,您可以在其中存储延时照片:

$ mkdir timelapse

运行以下命令创建 30 秒钟的延时,每两秒记录一张照片,将输出保存到 image0001.jpgimage0013.jpg 中:

$ rpicam-still --timeout 30000 --timelapse 2000 -o timelapse/image%04d.jpg
通过 cron

您还可以使用 cron 自动延时。首先,创建名为 timelapse.sh 的脚本,其中包含以下命令。将Raspberry Pi上的 <username> 占位符替换为您的用户帐户名称:

#!/bin/bash
DATE=$(date +"%Y-%m-%d_%H%M")
rpicam-still -o /home/<username>/timelapse/$DATE.jpg

然后,使脚本可执行:

$ chmod +x timelapse.sh

创建 timelapse 目录,您将在其中保存延时照片:

$ mkdir timelapse

打开您的crontab进行编辑:

$ crontab -e

在编辑器中打开文件后,添加以下行以安排每分钟捕获一次图像,将 <username> 占位符替换为您的主要用户帐户的用户名:

* * * * * /home/<username>/timelapse.sh 2>&1

保存并退出,您应该会看到以下消息:

crontab: installing new crontab

TIP: 要停止为延时拍摄图像,请再次运行 crontab -e 并从crontab中删除上面的行。

将图像拼接在一起

一旦你有了一系列延时照片,你可能想把它们组合成一个视频。使用 ffmpeg 在树莓派上执行此操作。

首先,安装 ffmpeg

$ sudo apt install ffmpeg

从包含 timelapse 目录的目录运行以下命令,将JPEG文件转换为mp4视频:

$ ffmpeg -r 10 -f image2 -pattern_type glob -i 'timelapse/*.jpg' -s 1280x720 -vcodec libx264 timelapse.mp4

上面的命令使用以下参数:

  • -r 10 :将输出视频的帧率(Hz值)设置为每秒10帧
  • -f image2 :设置 ffmpeg 以从模式指定的图像文件列表中读取
  • -pattern_type glob :使用通配符模式来解释文件名输入
  • -i 'timelapse/*.jpg' :指定输入文件以匹配 timelapse 目录中的JPG文件
  • -s 1280x720 :缩放到720p
  • -vcodec libx264 使用软件x264编码器。
  • timelapse.mp4 输出视频文件的名称。

有关 ffmpeg 选项的更多信息,请在终端中运行 ffmpeg --help

$ rpicam-vid --codec libav --libav-format avi --libav-audio --output example.avi

上一篇 – 树莓派超全系列教程文档–(59)树莓派摄像头rpicam-apps
下一篇 – 树莓派超全系列教程文档–(60)树莓派摄像头操作命令及使用其二

http://www.xdnf.cn/news/951823.html

相关文章:

  • Cyber Weekly #59
  • 如何在网页里填写 PDF 表格?
  • MyBatis中关于缓存的理解
  • Spring Framework 6:核心升级特性
  • 2023赣州旅游投资集团
  • OptiStruct结构分析与工程应用:传递路径贡献量分析(TPA)
  • 接口 RESTful 中的超媒体:REST 架构的灵魂驱动
  • 数据集分享 | MOT17数据集、UAVDT数据集
  • qt 双缓冲案例对比
  • 面试高频问题
  • 魔兽世界正式服插件与宏-敏锐盗贼实用宏探索(1)-宏命令制作入门与基本知识
  • 从面试角度回答Android中ContentProvider启动原理
  • android13 app的触摸问题定位分析流程
  • 邮科ODM摄像头:多维度护航高铁安全系统方案解析
  • Kubernetes ClusterIP 端口深度解析:虚拟服务与流量转发机制
  • 我的世界Java版1.21.4的Fabric模组开发教程(十三)自定义方块状态
  • 椭圆曲线密码学(ECC)
  • 基于ADMM的MRI-PET高质量图像重建算法
  • 【Linux】进程间通讯-消息队列
  • PHP:Web 开发的经典利器
  • 我如何使用 CodeMCP 进行开发并控制其他编程助手的预算
  • nodejs express 打包部署
  • VR 技术赋能南锣鼓巷的多元发展潜力与前景​
  • 多模态图像修复系统:基于深度学习的图片修复实现
  • Android Kotlin 协程详解
  • Python 中的加密库:守护数据安全的利刃
  • 8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
  • 拟合问题处理
  • C# dll版本冲突解决方案
  • 运放——单电源供电和双电源供电