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 29 Python
python在不同层级目录import模块的方法
Jan 31 Python
Python正确重载运算符的方法示例详解
Aug 27 Python
基于pip install django失败时的解决方法
Jun 12 Python
pandas使用apply多列生成一列数据的实例
Nov 28 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
Python2与Python3的区别实例分析
Apr 11 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
Aug 09 Python
python 项目目录结构设置
Feb 14 Python
Python实现的北京积分落户数据分析示例
Mar 27 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
记录一下scrapy中settings的一些配置小结
Sep 28 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
提问的智慧(2)
2006/10/09 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
QQ登录简单实现代码
2021/03/09 Javascript
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
中止javascript执行的方法
2014/02/14 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
WebPack配置vue多页面的技巧
2018/05/15 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
python k-近邻算法实例分享
2014/06/11 Python
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
简洁的十分钟Python入门教程
2015/04/03 Python
利用Python开发实现简单的记事本
2016/11/15 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
Django 自动生成api接口文档教程
2019/11/19 Python
基于python调用psutil模块过程解析
2019/12/20 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
毕业生精彩的自我评价分享
2013/10/06 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书