手机摄像头+Matlab完成图像的自动识别

Matlab中有现成的图像识别的例子。如果已经有摄像头了,那么就用摄像头进行试验。但是本老觉得笔记本摄像头很不方便,又不舍得花钱去买新的摄像头(主要是穷),既然手机有摄像头,那能不能用手机的摄像头呢?那样就很方便了。

Matlab没啥干不了的,有两种方法,一种利用Matlab自己的mobile版本,一种用第三方的app实现。

Matlab Mobile版本的方法

Matlab Mobile版本其实就是手机端调用摄像头,传至云端,电脑端下载的过程。上传云端到下载,国内的服务器速度不行,你懂的,所以这种方法不推荐。(那我写他干啥。。)

手机(Android)安装Matlab Mobile for Android(自己找办法,搜一下,应该很多),登陆账号,打开传感器设置,访问摄像头权限。

在这里插入图片描述

保持手机端Matlab在线,电脑端Matlab也在线,电脑端输入:

m=mobiledev

会提示安装“MATLAB Support Package for Android Sensors”,按照步骤安装,没有问题的话,会输出:

m = 

mobiledev with properties:

                      Device: 'Xiaomi - Mi 10 Pro(051d)'
                   Connected: 1
                     Logging: 0
            AvailableCameras: {'back' 'front'}
            InitialTimestamp: ''

   AccelerationSensorEnabled: 0
AngularVelocitySensorEnabled: 0
       MagneticSensorEnabled: 0
    OrientationSensorEnabled: 0
       PositionSensorEnabled: 0
Show all properties

忽略我的破手机啊。这时就可以调用这个手机的摄像头了。

改一下Matlab的例子,如下:

clear;
clear camera;

% 连接到相机并加载预训练的 GoogLeNet 网络。
m = mobiledev;
camera = camera(m,'back');
net = googlenet;

% 要对图像进行分类,必须将其大小调整为网络的输入大小。获取网络的图像输入层的 InputSize 属性的前两个元素。图像输入层是网络的第一层。
inputSize = net.Layers(1).InputSize(1:2);

% 要连续对相机图像进行分类,请将前面的步骤放入一个循环。在图窗打开时运行该循环。要停止实时预测,只需关闭图窗。在每次迭代结束时使用 drawnow 更新图窗。

h = figure;

while ishandle(h)
    im = snapshot(camera,'immediate');	%这里的immediate参数不要少了。
    image(im)
    im = imresize(im,inputSize);
    [label,score] = classify(net,im);
    title({char(label), num2str(max(score),2)});
    drawnow
end

这样就可以调用手机摄像头来玩图像识别了。当然,因为matlab的云服务器不在国内,速度慢的让人无法忍受,本老强烈不推荐这个方法。

用droidcam来调用手机摄像头

本老强烈推荐这个方法,简单,流畅,只是需要电脑和手机在同一个网络下。

安装droidcam,搜一下,很多。Github搜这个关键字也可以。

电脑端Matlab安装MATLAB Support Package for IP Cameras

手机端打开droidcam,出现相关的信息:
在这里插入图片描述

电脑端直接用这个信息就可以调用手机摄像头了。

代码如下:

clear;
clear camera;

% 连接到相机并加载预训练的 GoogLeNet 网络。
camera=ipcam('http://192.168.0.20:4747/video/mjpg.cgi')
net = googlenet;

% 要对图像进行分类,必须将其大小调整为网络的输入大小。获取网络的图像输入层的 InputSize 属性的前两个元素。图像输入层是网络的第一层。
inputSize = net.Layers(1).InputSize(1:2);

% 要连续对相机图像进行分类,请将前面的步骤放入一个循环。在图窗打开时运行该循环。要停止实时预测,只需关闭图窗。在每次迭代结束时使用 drawnow 更新图窗。

h = figure;

while ishandle(h)
    im = snapshot(camera);
    image(im)
    im = imresize(im,inputSize);
    [label,score] = classify(net,im);
    title({char(label), num2str(max(score),2)});
    drawnow
end

流畅,快速,可以愉快的进行图像识别了。

在这里插入图片描述

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值