本帖最后由 matlab的旋律 于 2020-9-16 09:51 编辑
常说的IP摄像头通常是指网络摄像机,它通常包括一个普通摄像机、视频服务器、网卡和应用软件等,高级版的还包括云台和变倍镜头。当然它的工作离不开网络传输,对于视频算法业余爱好者备齐这套设备也比较为繁琐。本文要介绍的是通过matlab软件将普通的移动设备(可以装移动版matlab,如手机、平板)变身为IP摄像头。本文使用的设备和软件工具包括iphone一部、笔记本电脑一台,手机版matlab、PC版的matlab2020a、matlab driver connector,另外需要注意的是在移动端和PC端的matlab软件需要使用同一账户登录,其中信号的传输如下图所示:
安装好软件登录账户以后,首先在移动端命令行输入m = mobiledev 查看,由于matlab2019b以后不再支持 connector如上一篇《MATLAB采集手机内置传感器数据进行实时算法设计的方法》的内容,在PC端输入m = mobiledev如下图所示: - >> m = mobiledev
- Support for establishing a connection between MATLAB Mobile and your computer has been removed. You can continue using
- mobile sensors and cameras in the MATLAB Mobile app by connecting to the MathWorks Cloud or by logging sensor data locally
- on your mobile device.
复制代码 在移动端如下图所示:其中Connected: 1表示传感器数据采集打开,Connected: 0表示传感器数据采集关闭,根据需要可以进行传感器数据开关的设置。由于本文主要介绍matlab对摄像头的控制,有关其他传感器的数据采集这里不再赘述。从图中可以看到AvailableCameras: {'back' 'front'},这里表示后置和前置摄像头都可用,本文使用后置摄像头其中设置的matlab代码为c = camera(m,'back');这样就完成移动端的配置了。然后将代码整理成脚本文件(本文命名为main.m),具体程序如下: - clear
- close all
- clc
- m = mobiledev;
- c = camera(m,'back');%打开后置摄像头
- while 1
- img = snapshot(c,'immediate');%立即获取摄像头图像
- img = imresize(img,[227,227]);%将图像进行进行resize
- pause(0.2)%延迟时间
- try
- imwrite(img, 'get.jpg')%进行保存
- end
- end
复制代码上面的步骤就完成了移动端的实时图像采集,接下来完成PC端的实时图像展示和识别。在安装matlab driver connector过程中会要求你为MATLAB Drive文件夹选择位置,这个位置就是移动端数据同步存储的位置,需要注意的是后续对该文件夹内的操作会直接同步到移动端,同时对移动端的相同文件夹操作也会同步PC端,因此需要提前做好程序的备份工作。当然误删除的文件也可以通过账户在网页版的垃圾箱找回。接下来在PC端读取MATLAB Drive文件夹中移动端同步的图片,通过设置定时器定时读取保存的文件’get.jpg’,显示在GUI上,如下图所示: 上图中左侧的为实时显示的移动端获取的图像,图像大小为Resize以后的227*227*3,右侧为使用Squeezenet进行识别分类的结果,结果很清楚的显示识别出了电风扇。这样iphone化身为一部随时可以进行远程监控的IP摄像头。另外如果需要实时获取其他传感器如GPS定位、加速度数据等进行实时定位、计算运动特征等都可以参照此方法进行。 参考文献:
|