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 相关文章推荐
在Python中操作字典之clear()方法的使用
May 21 Python
python 时间戳与格式化时间的转化实现代码
Mar 23 Python
Python正则表达式常用函数总结
Jun 24 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
python重试装饰器的简单实现方法
Jan 31 Python
Python简单I/O操作示例
Mar 18 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
python简单实现矩阵的乘,加,转置和逆运算示例
Jul 10 Python
Python 使用指定的网卡发送HTTP请求的实例
Aug 21 Python
python爬取豆瓣电影TOP250数据
May 23 Python
基于Python编写一个监控CPU的应用系统
Jun 25 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
神族 Protoss 历史背景
2020/03/14 星际争霸
php后退一页表单内容保存实现方法
2012/06/17 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
两种php实现图片上传的方法
2016/01/22 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
php异常处理捕获错误整理
2019/09/23 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
JS教程:window.location使用方法的区别介绍
2013/10/04 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
python使用cPickle模块序列化实例
2014/09/25 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
大学生毕业自我评价范文分享
2013/11/07 职场文书
如何客观的进行自我评价
2013/12/17 职场文书
父亲八十大寿答谢词
2014/01/23 职场文书
清洁工岗位职责
2014/01/29 职场文书
生物制药专业求职信
2014/03/11 职场文书
中学教师个人总结
2015/02/10 职场文书
晚会开场白和结束语
2015/05/29 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
python - asyncio异步编程
2021/04/06 Python
使用Redis做预定库存缓存功能
2022/04/02 Redis