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模拟鼠标拖动操作的方法
Mar 11 Python
itchat接口使用示例
Oct 23 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
python中必要的名词解释
Nov 20 Python
Python实现把多维数组展开成DataFrame
Nov 30 Python
Python实现线性判别分析(LDA)的MATLAB方式
Dec 09 Python
django model通过字典更新数据实例
Apr 01 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 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
中东人咖啡哲学
2021/03/03 咖啡文化
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
PHP 中dirname(_file_)讲解
2007/03/18 PHP
php循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
php 定界符格式引起的错误
2011/05/24 PHP
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
js同比例缩放图片的小例子
2013/10/30 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
Python urlopen 使用小示例
2008/09/06 Python
python制作爬虫并将抓取结果保存到excel中
2016/04/06 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
python pygame实现方向键控制小球
2019/05/17 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
主持人开场白台词
2015/05/29 职场文书
100句拼搏进取的名言警句,值得一读!
2019/10/07 职场文书
python not运算符的实例用法
2021/06/30 Python
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL