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函数学习笔记
Oct 07 Python
python中getaddrinfo()基本用法实例分析
Jun 28 Python
Python实现自动发送邮件功能
Mar 02 Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 Python
Python判断字符串是否xx开始或结尾的示例
Aug 08 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
Django表单提交后实现获取相同name的不同value值
May 14 Python
基于Python中Remove函数的用法讨论
Dec 11 Python
python3 kubernetes api的使用示例
Jan 12 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
Jan 29 Python
python opencv通过按键采集图片源码
May 20 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
PHP连接SQLServer2005方法及代码
2013/12/26 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
javascript event 事件解析
2011/01/31 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
JavaScript之数组扁平化详解
2019/06/03 Javascript
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python实现简易云音乐播放器
2018/01/04 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
Python装饰器用法与知识点小结
2020/03/09 Python
html5画布旋转效果示例
2014/01/27 HTML / CSS
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
给女朋友的道歉信
2014/01/10 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
保险公司早会主持词
2014/03/22 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
美术专业自荐信
2014/07/07 职场文书
赤壁观后感(2)
2015/06/15 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
五年级作文之学校的四季
2019/12/05 职场文书