C++ 如何在C++;?

C++ 如何在C++;?,c++,http,opencv,mjpeg,C++,Http,Opencv,Mjpeg,我需要访问并读取一个http流,该流正在从网络摄像机发送实时MJPEG视频,以便对图像进行一些opencv图像处理 我可以通过VLC访问摄像机的镜头,或者只需访问chrome或firefox中的URL即可。但是,当服务器只是发送一个连续提要时,我如何以编程方式访问http服务器并分离每个帧呢 数据似乎只是简单格式化,在HTTP头和JPEG数据之间循环。我能想到的唯一方法是以某种方式向服务器发送一个请求,在数据进入时对其进行解析,并将头部与实际的jpeg数据分离,然后将其传递给opencv 然而,

我需要访问并读取一个http流,该流正在从网络摄像机发送实时MJPEG视频,以便对图像进行一些opencv图像处理

我可以通过VLC访问摄像机的镜头,或者只需访问chrome或firefox中的URL即可。但是,当服务器只是发送一个连续提要时,我如何以编程方式访问http服务器并分离每个帧呢

数据似乎只是简单格式化,在HTTP头和JPEG数据之间循环。我能想到的唯一方法是以某种方式向服务器发送一个请求,在数据进入时对其进行解析,并将头部与实际的jpeg数据分离,然后将其传递给opencv

然而,这听起来非常复杂,我不太确定从哪里开始。你们知道有没有图书馆,或者我忽略了一个更简单的方法,可以让这一切变得更容易


非常感谢HTTP下载,您可以使用这个库

AFAIK MJPEG格式不是标准格式。它的实际字节格式因实现而异。但基本上只是用分隔符连接jpeg文件。如果使用十六进制编辑器查看字节,则可以轻松区分每个jpeg文件

例如,ffmpeg的mjpeg输出结构如下:

0xff 0xd8 // start of jpeg
{ ... }   // jpeg body
0xff 0xd9 // end of jpeg
...
0xff 0xd8 // start of jpeg
{ ... }   // jpeg body
0xff 0xd9 // end of jpeg
...
在本页中:

用Java解析MJPEG流,我用Java完美地实现了这一点

如果你尝试使用C++,你会发现一些东西被忽略:socket连接和渲染画布,LIGBURL似乎是一个很好的HTTP请求选项,但是仍然缺少画布,你可以使用类似GLUT或QT. 我在一些论坛上读到OpenCV可以读取MJPEG Streamer类型的输入流,但它们似乎需要是OpenCV的最新版本(从头开始编译OpenCV很难)


我希望这有帮助

我正在更新我的网站新的URL是