matlab网页视频流,MATLAB - 捕获视频流(MJPEG,rtsp,mpeg)

这是我从MATLAB支持得到的答案:

不幸的是,你是正确的,目前图像采集工具箱不支持IP摄像头 . 关于变通方法:1 . 如果mmread适合您,也许您可以在64位计算机上安装32位MATLAB . 2.编写自己的MEX驱动程序应该是一个可能的选择 . 3. IMREAD能够从IP摄像机获取帧 . 可以利用此功能并构建构建视频流的功能 . 虽然帧速率可能是一个问题 .

我建议你实现自己的Matlab mex函数来抓取视频帧 . 以下是一些指示:

OpenCV库用于从网络摄像机捕获视频流,请参阅OpenCV with Network Cameras . 每个IP摄像机可以具有用于访问视频流的不同API(即URL地址) . 例如, http://10.10.10.10/axis-cgi/mjpg/video.cgi?resolution=800x600&.mjpg .

以下是OpenCV库的matlab mex函数集合和开发工具包的链接(感谢Kota Yamaguchi):https://github.com/kyamagu/mexopencv . 该库可以轻松地在OpenCV数据类型和mxArray之间进行转换 . 这是一个例子:

#include "mexopencv.hpp"

void mexFunction( int nlhs, mxArray *plhs[],

int nrhs, const mxArray *prhs[] )

{

// Check arguments

if (nlhs!=1 || nrhs!=1)

mexErrMsgIdAndTxt("myfunc:invalidArgs", "Wrong number of arguments");

// Convert MxArray to cv::Mat

cv::Mat mat = MxArray(prhs[0]).toMat();

// Do whatever you want

// Convert cv::Mat back to mxArray*

plhs[0] = MxArray(mat);

}

可以通过使用线程使应用程序异步,其中 生产环境 者线程从相机抓取帧并将其放入循环缓冲区 . 另一方面,消费者线程从缓冲区中检索帧并将它们转换为mxArray(矩阵)输出 . 见How to implement a circular buffer of cv::Mat objects (OpenCV)? . 需要使循环缓冲区成为线程安全的,请参阅Thread safe implementation of circular buffer .

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值