主要内容

从IP摄像机显示JPEG图像流

这个例子展示了如何使用HTTPMultipartConsumer流视频从一个网站。定制一个ImageConsumer类- - -CameraPlayer——显示JPEG图像从一个假设的网站来自一个IP地址。

创建一个工作示例,您需要:

  • 基于IP地址URL类似于:

    url =“http://999.99.99.99/video/mjpg.cgi”;
  • 凭证类似于:

    信誉= matlab.net.http.Credentials (“计划”,“基本”,“用户”,“管理”,“通过”,“管理”);信誉。用户名=“yourName”;信誉。密码=“yourPassword”;

CameraPlayer

IP摄像机发送JPEG图像的部分永无止境的多部分消息。每个部分都有一个类型的“图像/ jpeg”。处理该消息,创建一个MultipartConsumer表明任何类型的一部分“图像/ *”应该由CameraPlayer。MATLAB®调用CameraPlayer.putData收到的每一帧图像的方法,调用它的超类来转换数据。CameraPlayer轮流使用imshow创建一个图窗口显示图像,并显示后续图像在同一个窗口中。当用户关闭窗口时,putData返回停止= true,从而导致MATLAB关闭连接。

classdefCameraPlayer < matlab.net.http.io.ImageConsumer% CameraPlayer球员IP相机%显示图像内容类型的ContentConsumer图窗口。如果直接在指定% RequestMessage.send()操作,它假设%的全部内容ResponseMessage是一个单一的形象。如果响应%是一个多部分消息,这是指定为一个图像处理程序% GenericConsumer或MultipartConsumer类型,那么这个假设%是一帧视频和显示收到他们。%% CameraPlayer属性:% CameraPlayer——构造函数%图像——当前显示图像对象%%以下显示收到的图像,或得到的序列图像%多部分消息并保存的最后形象收到响应%消息数据。最后一个图像显示仍然可见,直到cp%删除。%%要求= RequestMessage;% cp = CameraPlayer;% resp =点播。发送(url, [], GenericConsumer('image/*', cp));% = cp.Image形象;%……操作图像数据……% 2017年版权MathWorks公司。属性%图像——当前显示图像对象%这张照片是在一个轴图。这是这个对象时删除%删除。图像% -控制次数足以显示消息足够的结束方法函数obj = CameraPlayer () obj = obj@matlab.net.http.io.ImageConsumer ();结束函数(len,停止)= putData (obj,数据)% putData——由MATLAB或家长消费者处理图像数据%将数据传递给ImageConsumer,缓冲区,直到最终的数据%,然后将其转换为一个MATLAB图像根据图像的类型。(len,停止)= obj.putData@matlab.net.http.io.ImageConsumer(数据);如果isempty(数据)%的形象;在Response.Body.Data显示结果imdata = obj.Response.Body.Data;如果iscell (imdata)如果~ isempty (imdata {2})%如果是索引图像如果我们得到一个单元阵列,所以转换imdata imdata = ind2rgb (imdata {1}, {2});其他的imdata = imdata {1};结束结束如果isempty (obj.Image)%我们第一次被称为,创建一个包含图像的图obj。形象= imshow (imdata);obj。足够的= 0;其他的%随后的时候我们被称为,只改变already-displayed CData%的形象。obj。足够的= obj.Enough + 1;如果obj。> 100 disp“停止,关闭图窗口。”obj。足够的= 0;结束试一试obj.Image。CData = imdata;e%失败如果窗口关闭或数据很糟糕如果比较字符串(e.identifier“MATLAB:类:InvalidHandle”)%用户必须关闭窗户;终止默默地停止= true;disp图窗口关闭。返回结束结束结束drawnow结束结束函数删除(obj)删除(obj.Image);结束结束结束

调用CameraPlayer

下面的代码提供了一个框架来检索图像。要运行此代码,您必须为内容提供值< >字符。您的web服务的URL可能包括额外的参数,如登录信息和其他信息指定为名称、值对参数。利用CameraPlayer,将它添加到你的电话发送。创建请求消息的信息,请参阅使用HTTP与MATLAB

url =“< YOUR_URL_CONTAINING_IP_ADDRESS >”;cp = CameraPlayer;消费者= matlab.net.http.io.MultipartConsumer (“图像/ *”,cp);信誉= matlab.net.http.Credentials (“计划”,“基本”,“用户”,“管理”,“通过”,“管理”);信誉。用户名=“< YOURNAME >”;信誉。密码=“< YOURPASSWORD >”;选择= matlab.net.http.HTTPOptions (“信誉”信誉,“SavePayload”,真正的);r = matlab.net.http.RequestMessage ();resp = r。发送(url, opts, consumer);