python3从网络摄像机解析mjpeg http流的示例


Posted in Python onNovember 13, 2020

前言

网络摄像头的视频流解析直接使用通过http的Mjpeg是具有边界帧信息的multipart / x-mixed-replace,而jpeg数据只是以二进制形式发送。因此,实际上不需要关心HTTP协议标头。所有jpeg帧均以marker开头,0xff 0xd8并以结尾0xff 0xd9。因此,上面的代码从http流中提取了此类帧,并将其一一解码。像下面

...(http)
0xff 0xd8   --|
[jpeg data]   |--this part is extracted and decoded
0xff 0xd9   --|
...(http)
0xff 0xd8   --|
[jpeg data]   |--this part is extracted and decoded
0xff 0xd9   --|
...(http)

如果图像的获取是从tcp网络中传输到本地进行解析需要对bytes类型数据进行解码

在使用OpenCV直接调用网络摄像头时可能会出现

Cam not found

这时候就需要下面这种办法

代码: 
帧解析

import cv2
cap = cv2.VideoCapture('http://localhost:8080/frame.mjpg')
 
while True:
 ret, frame = cap.read()
 print(frame)
 if ret == True:
  cv2.imshow('Video', frame)
 
  if cv2.waitKey(1) == 27:
   exit(0)

视频流解析

import cv2
import requests
import numpy as np
 
r = requests.get('http://192.168.1.xx/mjpeg.cgi', auth=('user', 'password'), stream=True)
if(r.status_code == 200):
  bytes = bytes()
  for chunk in r.iter_content(chunk_size=1024):
    bytes += chunk
    a = bytes.find(b'\xff\xd8')
    b = bytes.find(b'\xff\xd9')
    if a != -1 and b != -1:
      jpg = bytes[a:b+2]
      bytes = bytes[b+2:]
      i = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8), cv2.IMREAD_COLOR)
      cv2.imshow('i', i)
      if cv2.waitKey(1) == 27:
        exit(0)
else:
  print("Received unexpected status code {}".format(r.status_code))

以上就是python3从网络摄像机解析mjpeg http流的示例的详细内容,更多关于python 解析mjpeg http流的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
详解Django框架中用户的登录和退出的实现
Jul 23 Python
pycharm中连接mysql数据库的步骤详解
May 02 Python
python学习笔记之列表(list)与元组(tuple)详解
Nov 23 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
Jan 08 Python
python用opencv批量截取图像指定区域的方法
Jan 24 Python
对Python中的条件判断、循环以及循环的终止方法详解
Feb 08 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
Django视图扩展类知识点详解
Oct 25 Python
python实现二分类的卡方分箱示例
Nov 22 Python
Django密码存储策略分析
Jan 09 Python
Python 实现一个计时器
Jul 28 Python
Python机器学习之PCA降维算法详解
May 19 Python
python+flask编写一个简单的登录接口
Nov 13 #Python
jupyter notebook快速入门及使用详解
Nov 13 #Python
Python中pass的作用与使用教程
Nov 13 #Python
python入门教程之基本算术运算符
Nov 13 #Python
python“静态”变量、实例变量与本地变量的声明示例
Nov 13 #Python
Python和Bash结合在一起的方法
Nov 13 #Python
python小技巧——将变量保存在本地及读取
Nov 13 #Python
You might like
批量修改RAR文件注释的php代码
2010/11/20 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
JavaScript的9个陷阱及评点分析
2008/05/16 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
AngularJS过滤器filter用法分析
2016/12/11 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
python如何修改装饰器中参数
2018/03/20 Python
python中使用print输出中文的方法
2018/07/16 Python
基于python的列表list和集合set操作
2019/11/24 Python
Python通过Pillow实现图片对比
2020/04/29 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
情人节寄语大全
2014/04/11 职场文书
条幅标语大全
2014/06/20 职场文书
党员带头倡议书
2015/04/29 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
学术会议领导致辞
2015/07/29 职场文书
解析MySQL索引的作用
2022/03/03 MySQL