jon*_*nas 5 c++ opencv http mjpeg
我需要访问和读取从网络摄像机发送实时MJPEG素材的http流,以便对图像进行一些opencv图像处理.
我可以通过VLC访问相机的镜头,或者只需转到chrome或firefox中的URL.但是,当服务器只发送连续的Feed时,如何以编程方式访问http服务器并分离每个帧?
数据似乎只是简单格式化,在HTTP标头和JPEG数据之间循环.我能想到接近它的唯一方法是以某种方式向服务器发送请求,在数据进入时解析数据,并将标头与实际的jpeg数据分开,然后将其传递给opencv.
然而,这听起来非常复杂,我不太清楚我从哪里开始.你们知道那里有没有图书馆,或者只是一个我忽视的简单方法,这可以让这一切变得更容易吗?
非常感谢
对于HTTP下载,您可以使用Libcurl库.
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
...
Run Code Online (Sandbox Code Playgroud)