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 Django连接MySQL数据库做增删改查
Nov 07 Python
Python中运行并行任务技巧
Feb 26 Python
python3简单实现微信爬虫
Apr 09 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
浅谈python迭代器
Nov 08 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
Django 外键的使用方法详解
Jul 19 Python
Python实现平行坐标图的绘制(plotly)方式
Nov 22 Python
python3 求约数的实例
Dec 05 Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 Python
在Mac中配置Python虚拟环境过程解析
Jun 22 Python
Python3+Appium安装及Appium模拟微信登录方法详解
Feb 16 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 文章调用类代码
2011/08/11 PHP
discuz目录文件资料汇总
2014/12/30 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
浅谈JavaScript闭包
2019/04/09 Javascript
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
Python简单操作sqlite3的方法示例
2017/03/22 Python
python中模块查找的原理与方法详解
2017/08/11 Python
python+opencv实现动态物体识别
2018/01/09 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
使用numba对Python运算加速的方法
2018/10/15 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
详解前端HTML5几种存储方式的总结
2016/12/27 HTML / CSS
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
生产内勤岗位职责
2013/12/07 职场文书
大学军训感言600字
2014/02/25 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
三峡人家导游词
2015/01/31 职场文书
基于Python绘制子图及子图刻度的变换等的问题
2021/05/23 Python
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android