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设计模式编程中观察者模式与策略模式的运用
Mar 02 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
python reverse反转部分数组的实例
Dec 13 Python
对python3中的RE(正则表达式)-详细总结
Jul 23 Python
python中的线程threading.Thread()使用详解
Dec 17 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 Python
pycharm-professional-2020.1下载与激活的教程
Sep 21 Python
python脚本定时发送邮件
Dec 22 Python
如何用Python提取10000份log中的产品信息
Jan 14 Python
一篇文章弄懂Python中的内建函数
Aug 07 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
Apr 13 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
destoon二次开发入门示例
2014/06/20 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
php数组转成json格式的方法
2015/03/09 PHP
PHP中预定义的6种接口介绍
2015/05/12 PHP
Yii2.0中的COOKIE和SESSION用法
2016/08/12 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
python删除列表内容
2015/08/04 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
Python Pandas 箱线图的实现
2019/07/23 Python
Python实现快速排序的方法详解
2019/10/25 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
基于Python的自媒体小助手---登录页面的实现代码
2020/06/29 Python
python 制作本地应用搜索工具
2021/02/27 Python
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
50道外企软件测试面试题
2014/08/18 面试题
小学生志愿者活动方案
2014/08/23 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
学校拾金不昧表扬信
2015/01/16 职场文书
三方协议书
2015/01/27 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
2015年党小组工作总结
2015/05/26 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
Oracle 区块链表创建过程详解
2021/05/15 Oracle