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的汉字转GBK码实现代码
Feb 19 Python
Python3实现连接SQLite数据库的方法
Aug 23 Python
基础的十进制按位运算总结与在Python中的计算示例
Jun 28 Python
python非递归全排列实现方法
Apr 10 Python
详解PyTorch批训练及优化器比较
Apr 28 Python
Python爬虫学习之翻译小程序
Jul 30 Python
Python for循环搭配else常见问题解决
Feb 11 Python
解决c++调用python中文乱码问题
Jul 29 Python
Python下载的11种姿势(小结)
Nov 18 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
Django 实现图片上传和下载功能
Dec 31 Python
pycharm 关闭search everywhere的解决操作
Jan 15 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
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
php创建类并调用的实例方法
2019/09/25 PHP
jquery一句话全选/取消全选
2011/03/01 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
python数据结构树和二叉树简介
2014/04/29 Python
在Django的模板中使用认证数据的方法
2015/07/23 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
python实现手机通讯录搜索功能
2018/02/22 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
pandas求两个表格不相交的集合方法
2018/12/08 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
化工机械应届生求职信
2013/11/04 职场文书
优秀员工自荐书范文
2013/12/08 职场文书
优秀企业获奖感言
2014/02/01 职场文书
机电一体化求职信
2014/03/10 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python