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 相关文章推荐
举例讲解Linux系统下Python调用系统Shell的方法
Nov 07 Python
python3中set(集合)的语法总结分享
Mar 24 Python
python 生成器协程运算实例
Sep 04 Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 Python
对django中render()与render_to_response()的区别详解
Oct 16 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
分析经典Python开发工程师面试题
Apr 08 Python
pandas 数据结构之Series的使用方法
Jun 21 Python
如何编写python的daemon程序
Jan 07 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对现有搜索引擎的调用
2013/06/25 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
2018/12/03 Javascript
Vue将props值实时传递 并可修改的操作
2020/08/09 Javascript
Python实现简单字典树的方法
2016/04/29 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
Python中偏函数用法示例
2018/06/07 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
会计专业推荐信
2013/10/29 职场文书
建筑工程毕业生自我鉴定
2014/01/14 职场文书
思想品德课教学反思
2014/02/10 职场文书
高中教师评语大全
2014/04/25 职场文书
会计演讲稿范文
2014/05/23 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
2014年妇女工作总结
2014/12/06 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
PHP控制循环操作的时间
2021/04/01 PHP
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android