主要内容

使用树莓派相机板

这个例子向您展示了如何使用MATLAB®树莓派硬件支持包从树莓派™相机板模块捕获和处理图像。

简介

树莓派相机板是为树莓派硬件定制设计的附加模块。它通过自定义CSI接口连接到树莓派硬件。该传感器在静态捕获模式下具有500万像素的原生分辨率。在视频模式下,它支持捕获分辨率高达1080p,每秒30帧。该相机模块重量轻,体积小,是移动项目的理想选择。

在本例中,您将学习如何创建cameraboard对象连接到树莓派相机板,从相机捕获图像并在MATLAB中处理。

先决条件

所需的硬件

要运行这个例子,你需要以下硬件:

  • 覆盆子π硬件

  • 至少输出1A的电源

  • 一个相机板

连接相机板

摄像机板通过带状电缆连接到树莓派上。带状电缆的一端连接到摄像机PCB,另一端连接到树莓派硬件本身。你需要用正确的方式连接彩带线,否则相机将无法工作。在摄像机PCB上,线缆上的蓝色背面应该远离PCB,在树莓派硬件上,它应该面向以太网连接。

创建一个Camera Board对象

通过在MATLAB提示符上执行以下命令创建一个摄像机板对象。

清晰的零售物价指数零售物价指数= raspi ();凸轮= cameraboard(零售物价指数,“决议”“640 x480”);

摄像机是摄像机上物体的手柄。让我们在MATLAB中显示从树莓派相机板捕获的图像。

I = 1:100 img = snapshot(cam);图像(img);drawnow;结束

检查对象属性

Camera Board的MATLAB命令行接口有许多属性,这些属性暴露了Camera的特性。要查看cameraboard类的属性,在MATLAB提示符中输入以下命令。

凸轮

使用cameraboard对象的属性,您可以水平或垂直翻转图像,更改图像质量参数,如亮度、对比度、饱和度和清晰度,并访问高级相机功能,如图像稳定和图像效果。Resolution和FrameRate属性在实例化后不能更改。如果您想更改这些属性,请从MATLAB工作区中清除cameraboard对象,并通过指定新的Resolution和FrameRate参数来创建一个新对象。

清晰的凸轮凸轮= cameraboard(零售物价指数,“决议”“320 x240”的帧速率, 30);

cameraboard对象的其他属性可以随时更改。让我们试着水平翻转图像。

图(1);图像(img);凸轮。HorizontalFlip = true;图(2);图像(img);

形象的影响

让我们尝试一个简单的图像反演算法从树莓派相机板捕获的图像。

图(1);I = 1:100 img = snapshot(cam);Img = 255 - Img;图像(img);drawnow;结束

图像反转产生颜色负效果。树莓派相机板本身可以通过设置ImageEffect属性为“负”来反转图像。

图(1);凸轮。ImageEffect =“负面”I = 1:100 img = snapshot(cam);图像(img);drawnow;结束

这是一个更有趣的图像效果。

图(1);凸轮。ImageEffect =“草图”I = 1:100 img = snapshot(cam);图像(img);drawnow;结束

数码变焦

树莓派相机板允许传感器的一个区域被用作图像捕获区域。这个区域称为感兴趣区域(ROI),被指定为归一化向量[x y wh],其中x, y定义左上角,w和h指定宽度和高度。

在保持输出图像尺寸不变的情况下降低ROI会产生数字缩放效果。下面的MATLAB代码改变ROI的x和y参数,以放大到传感器的右下部分。被捕获的传感器的近似面积用红色矩形表示。

图(1);ROI = [0 0 1 1];凸轮。ROI = [0 0 1 1];I = 1:10 img = snapshot(cam);结束次要情节(211);图像(img);drawnow;矩形=矩形(“位置”,[1 1 320 240]);rect.EdgeColor =“红色”I = 1:20 00 img = snapshot(cam);如果I > 20 fc = (I - 5)*0.0025;Roi (1:2) = [fc, fc];Roi (3:end) = [1-fc, 1-fc];凸轮。投资回报率= ROI;次要情节(211);rect.Position = roi。*[320 240 320 240];drawnow;次要情节(212);图像(img); drawnow;结束结束

录制视频

您可以使用树莓派相机板的MATLAB命令行界面录制视频。您可以通过执行record命令开始录制视频。record命令在执行后立即返回到MATLAB命令提示符,而不等待整个视频被记录。视频录制过程中,摄像机板采集到的图像会以H264 raw格式保存到树莓派硬件上。录制完成后,您可以将视频文件带到主机上进行播放。正在录制视频时,不能进行快照。由于录制的视频是H264的原始格式,大多数玩家无法直接播放视频文件。必须先将记录的H264流转换为适当的格式,例如MP4,然后才能在MATLAB中播放或加载它。

在MATLAB命令提示符上执行以下操作,将视频记录到名为“vid”的文件中。H264 ',持续30秒。

记录(凸轮,“vid.h264”, 30)

record命令用来开始录像。它不会阻塞MATLAB命令提示符。您可以在视频录制过程中执行MATLAB操作。但是,您不能从相机拍摄快照。要检查记录是否完成,请使用cameraboard对象的recording属性。

凸轮。记录

当记录完成时,此属性返回false。如果您想随时停止视频录制,请使用cameraboard对象的stop方法。

将录制的H264原始视频流带到您的主机上。

getFile(零售物价指数,“vid.h264”

原始的H264流需要转换为视频文件格式,例如MP4,然后才能在媒体播放器中播放或在MATLAB中加载它。您可以使用FFmpeg™将原始H264转换为MP4视频文件。根据安装说明,使用ffmpeg.org网站上适当的下载链接将FFmpeg安装到您的主机上。在安装FFmpeg之后,定义一个保存安装位置的MATLAB变量。例如:

ffmpegDir =“C: \ ffmpeg - 20140218 - git - 61 d5970 - win32 -静态的

用您计算机中合适的FFmpeg安装路径替换上面的路径。要从捕获的原始H264流创建MP4视频文件,请在MATLAB命令提示符中执行以下命令。

cmd = [“””fullfile (ffmpegDir“本”“ffmpeg.exe”'" -r 30 -i vid。H264 -vcodec拷贝myvid.mp4 &'];[status, message] = system(cmd)

在FFmpeg完成视频转换后,您将得到一个可以在媒体播放器中播放的MP4视频文件。你也可以将视频加载到MATLAB中进行处理。要在MATLAB中播放捕获的视频,在MATLAB命令提示符中执行以下命令。

vid = VideoReader (“myvid.mp4”k = 1:视频。NumberOfFrames形象(读(vid, k));drawnow;结束

注意:FFmpeg是一个第三方工具,与它相关的任何问题都与MATLAB无关。

Baidu
map