安泰电子世界网 首页 Ardunio 相机软件(五)

相机软件(五)

2024-11-5 17:39 | 发布者: txc | 查看: 25 | 评论: 0

简介:相机软件

segment

UTS视频输出到传递持续时间的多个文件中。接受以毫秒为单位的持续时间。如果传递的持续时间非常小(例如,1),则将每一帧记录到单独的输出文件中,以模拟突发捕获。
您可以使用字符串格式为每个文件指定单独的文件名,例如 --output test%04d.h264。

circular

默认值:4
将视频录制写入内存中的循环缓冲区。当应用程序退出时,将循环缓冲区记录到磁盘。接受可选大小(以兆字节为单位)。

inline

在每个 Iframe(帧内)中写入序列标头。这可以帮助客户从视频中的任何一点解码视频序列,而不仅仅是开始。建议使用segmentsplitcircular和流选项。
仅适用于以 H.264 格式编码的视频。不接受值。

listen

在对视频进行编码之前等待传入的客户端连接。适用于通过 TCP/IP 进行网络流式处理。不接受值。

frames

准确记录指定的帧数。任何非零值都会覆盖timeout。接受非零整数。

framerate

准确记录指定的帧速率。接受非零整数。

libav选项

本节中指定的命令行选项仅适用于 libav 视频后端。
若要启用 libav 后端,请向编解码器选项传递值 libav。
若要将以下选项之一传递给应用程序,请在选项名称前面加上--.如果选项需要值,请在选项名称之后立即传递该值,并用一个空格分隔。如果值包含空格,请将该值括在引号中。
某些选项具有速记别名,例如 -h 而不是 --help。使用这些速记别名而不是完整的选项名称,以牺牲可读性为代价来节省空间和时间。

libav-format

设置 libav 输出格式。接受以下值:

  • mkv

  • mp4编码

  • avi编码

  • h264流

  • mpegts流

如果不提供此选项,则传递给output选项的文件扩展名将确定文件格式。

libav-audio

启用音频录制。启用后,还必须指定audio-codec。不接受值。

audio-codec

aac
选择用于输出的音频编解码器。有关可用编解码器的列表,请运行 ffmpeg -codec。

audio-bitrate

设置音频编码的比特率(以每秒比特数为单位)。接受数字输入。
示例:rpicam-vid --codec libav -o test.mp4 --audio_codec mp2 --audio-bitrate 16384(使用 mp2 编解码器以 16 KB/秒的速度录制音频)

audio-samplerate

默认值:0
以 Hz 为单位设置音频采样率。 接受数字输入。0 使用输入采样率。

audio-device

选择用于录音的 ALSO 输入设备。有关可用设备的列表,请运行以下命令:

pactl list | grep -A2 'Source #' | grep 'Name: '

您应看到类似于以下内容的输出:

Name: alsa_output.platform-bcm2835_audio.analog-stereo.monitor
Name: alsa_output.platform-fef00700.hdmi.hdmi-stereo.monitor
Name: alsa_output.usb-GN_Netcom_A_S_Jabra_EVOLVE_LINK_000736B1214E0A-00.analog-stereo.monitor
Name: alsa_input.usb-GN_Netcom_A_S_Jabra_EVOLVE_LINK_000736B1214E0A-00.mono-fallback

av-sync

将音频样本时间戳移动一个值(以微秒为单位)。接受正数值和负数值。

检测选项

本节中指定的命令行选项仅适用于使用 rpicam-detect 进行对象检测。
若要将以下选项之一传递给 rpicam-detect,请在选项名称前面加上 --.如果选项需要值,请在选项名称之后立即传递该值,并用一个空格分隔。如果值包含空格,请将该值括在引号中。
某些选项具有速记别名,例如 -h 而不是 --help。使用这些速记别名而不是完整的选项名称,以牺牲可读性为代价来节省空间和时间。

object

检测具有给定名称的对象,该名称源自模型的标签文件。接受纯文本文件名作为输入。

gap

在捕获之间至少等待这么多帧。接受数值。

使用 rpicam-apps 进行后处理

rpicam-apps 共享一个通用的后处理框架。这允许他们通过许多自定义图像处理和图像分析例程传递从相机系统接收的图像。每个这样的例程都被称为一个阶段。若要运行后处理阶段,请提供一个 JSON 文件,指示应用程序应用哪些阶段和选项。您可以在 rpicam-apps 存储库的 assets 文件夹中找到使用内置后处理阶段的示例 JSON 文件。
例如,否定阶段将亮像素变暗,将暗像素变亮。因为否定阶段是基本的,不需要配置,所以negate.json只是命名阶段:

{
    "negate": {}
}

要将否定阶段应用于图像,请将negate.json传递给 post-process-file 选项:

rpicam-hello --post-process-file negate.json

要运行多个后处理阶段,请创建一个包含多个阶段作为顶级键的 JSON 文件。例如,在以下配置中运行 Sobel 阶段,然后运行否定阶段:

{
    "sobel_cv":
    {
        "ksize": 5
    },
    "negate": {}
}

Sobel 阶段使用 OpenCV,因此是 cv 后缀。它有一个用户可配置的参数 ksize,用于指定要使用的筛选器的内核大小。在这种情况下,Sobel 滤镜在黑色背景上产生明亮的边缘,而负极阶段将其转换为白色背景上的深色边缘。、

否定的 Sobel 过滤器。
某些阶段(如否定)会以某种方式改变图像。其他阶段分析图像以生成元数据。后处理阶段可以将此元数据传递到其他阶段甚至应用程序。
为了提高性能,图像分析通常使用降低的分辨率。rpicam-apps 直接从 ISP 提供专用的低分辨率源。
注意:Raspberry Pi OS 提供的 rpicam-apps 不包括 OpenCV 和 TensorFlow Lite。因此,某些依赖它们的后处理阶段将被禁用。要使用这些阶段,请重新编译 rpicam-apps。在运行 32 位内核的 Raspberry Pi 3 或 4 上,使用 -DENABLE_COMPILE_FLAGS_FOR_TARGET=armv8-neon 标志进行编译以加速某些阶段。

内置载物台

negate阶段

negate阶段没有用户可配置的参数。
默认negate.json文件:

{
    "negate" : {}
}

运行以下命令以将此阶段文件与 rpicam-hello 一起使用:

rpicam-hello --post-process-file negate.json

输出示例:

negate图像。

hdr阶段

此阶段使用高动态范围 (HDR) 和动态范围压缩 (DRC) 强调图像中的细节。DRC 使用单个图像,而 HDR 组合多个图像以获得类似的结果。
参数分为三组:LP 滤波器、全局色调映射和局部对比度。
此阶段对完全处理的输入图像应用平滑滤波器以生成低通 (LP) 图像。然后,它从原始图像和 LP 图像的差异生成高通 (HP) 图像。然后,它将全局色调映射应用于 LP 图像,并将其添加回 HP 图像。此过程有助于保持局部对比度。
您可以使用以下参数配置此阶段:

num_frames要累积的帧数;对于 DRC,使用 1;对于 HDR,请尝试 8
lp_filter_strength低通IIR滤波器的系数。
lp_filter_threshold将像素级别与有意义细节的阈值相关联的分段线性函数
global_tonemap_points输入图像直方图中的点映射到输出范围内的目标,我们希望在其中移动它们。使用以下子配置:
  • 分位数间平均值(q 和width)
  • 目标占整个输出范围的比例(target)
  • 最大 (max_up) 和最小 (max_down) 增益来移动测量的分位数间平均值,以防止图像变化太大
global_tonemap_strength全局色调图的应用强度
local_pos_strength一个分段线性函数,用于定义当添加回色调映射的 LP 图像时应用于局部对比度的增益,以获得正面(明亮)细节
local_neg_strength一个分段线性函数,用于定义当添加回色调 LP 图像时应用于局部对比度的增益,以获得负(暗)细节
local_tonemap_strength应用于所有重新添加的局部对比度的整体增益
local_colour_scale允许输出颜色或多或少受到强烈影响的因素

要控制加工强度,请更改global_tonemap_strength和local_tonemap_strength参数。
在 Raspberry Pi 4 上处理 12MP 图像的单个图像需要 2 到 3 秒。当累积多个帧时,此阶段仅将处理后的图像发送到应用程序。
DRC 的默认drc.json文件:

{
    "hdr" : {
		"num_frames" : 1,
		"lp_filter_strength" : 0.2,
		"lp_filter_threshold" : [ 0, 10.0 , 2048, 205.0, 4095, 205.0 ],
		"global_tonemap_points" :
			[
			    { "q": 0.1, "width": 0.05, "target": 0.15, "max_up": 1.5, "max_down": 0.7 },
			    { "q": 0.5, "width": 0.05, "target": 0.5, "max_up": 1.5, "max_down": 0.7 },
			    { "q": 0.8, "width": 0.05, "target": 0.8, "max_up": 1.5, "max_down": 0.7 }
			],
		"global_tonemap_strength" : 1.0,
		"local_pos_strength" : [ 0, 6.0, 1024, 2.0, 4095, 2.0 ],
		"local_neg_strength" : [ 0, 4.0, 1024, 1.5, 4095, 1.5 ],
		"local_tonemap_strength" : 1.0,
		"local_colour_scale" : 0.9
    }
}

例:

未经 DRC 处理的图像
运行以下命令以将此阶段文件与 rpicam-still 一起使用:

rpicam-still -o test.jpg --post-process-file drc.json


具有 DRC 处理的图像
HDR 的默认hdr.json文件:

{
    "hdr" : {
		"num_frames" : 8,
		"lp_filter_strength" : 0.2,
		"lp_filter_threshold" : [ 0, 10.0 , 2048, 205.0, 4095, 205.0 ],
		"global_tonemap_points" :
			[
			    { "q": 0.1, "width": 0.05, "target": 0.15, "max_up": 5.0, "max_down": 0.5 },
			    { "q": 0.5, "width": 0.05, "target": 0.45, "max_up": 5.0, "max_down": 0.5 },
			    { "q": 0.8, "width": 0.05, "target": 0.7, "max_up": 5.0, "max_down": 0.5 }
			],
		"global_tonemap_strength" : 1.0,
		"local_pos_strength" : [ 0, 6.0, 1024, 2.0, 4095, 2.0 ],
		"local_neg_strength" : [ 0, 4.0, 1024, 1.5, 4095, 1.5 ],
		"local_tonemap_strength" : 1.0,
		"local_colour_scale" : 0.8
    }
}

例:

未经HDR处理的图像
运行以下命令以将此阶段文件与 rpicam-still 一起使用:

rpicam-still -o test.jpg --ev -2 --denoise cdn_off --post-process-file hdr.json


具有 HDR 处理的图像

最新评论

友情链接:

返回顶部