使用树莓派相机板
这个例子向您展示了如何使用MATLAB®树莓派硬件支持包从树莓派™相机板模块捕获和处理图像。
简介
树莓派相机板是为树莓派硬件定制设计的附加模块。它通过自定义CSI接口连接到树莓派硬件。该传感器在静态捕获模式下具有500万像素的原生分辨率。在视频模式下,它支持捕获分辨率高达1080p,每秒30帧。该相机模块重量轻,体积小,是移动项目的理想选择。
在本例中,您将学习如何创建cameraboard对象连接到树莓派相机板,从相机捕获图像并在MATLAB中处理。
先决条件
我们建议完成开始使用树莓派硬件的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无关。