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中文竖排显示的方法
Jul 28 Python
Python中py文件引用另一个py文件变量的方法
Apr 29 Python
Python使用numpy模块创建数组操作示例
Jun 20 Python
python实现杨氏矩阵查找
Mar 02 Python
Python闭包和装饰器用法实例详解
May 22 Python
Django框架下静态模板的继承操作示例
Nov 08 Python
python pandas利用fillna方法实现部分自动填充功能
Mar 16 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
python实现在线翻译
Jun 18 Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 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 的 __FILE__ 常量
2007/01/15 PHP
PHP 分页原理分析,大家可以看看
2009/12/21 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
PHP中extract()函数的定义和用法
2012/08/17 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
推荐dojo学习笔记
2007/03/24 Javascript
Cookie 注入是怎样产生的
2009/04/08 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
英国领先的电子、技术和办公用品购物网站:Ebuyer
2018/04/04 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
小车司机岗位职责
2013/11/25 职场文书
社区助残日活动总结
2014/08/29 职场文书
实习推荐信格式模板
2015/03/27 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang