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实现查看系统启动项功能示例
May 10 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
python英语单词测试小程序代码实例
Sep 09 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
如何使用Python抓取网页tag操作
Feb 14 Python
Python Django form 组件动态从数据库取choices数据实例
May 19 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
关于Kotlin中SAM转换的那些事
Sep 15 Python
python pip如何手动安装二进制包
Sep 30 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
Jun 05 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
javascript获取xml节点的最大值(实现代码)
2013/12/11 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
python类继承用法实例分析
2015/05/27 Python
python的debug实用工具 pdb详解
2019/07/12 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
Python爬虫教程知识点总结
2020/10/19 Python
python3 kubernetes api的使用示例
2021/01/12 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
Otel.com:折扣酒店预订
2017/08/24 全球购物
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
opencv实现图像平移效果
2021/03/24 Python
出纳岗位职责
2013/11/09 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
政府四风问题整改措施
2014/10/04 职场文书
详解python的异常捕获
2022/03/03 Python
MongoDB数据库之添删改查
2022/04/26 MongoDB