opencv html5,Pyimagesearch CV系列之三:HTML获取OpenCV视频流

一、概述通常我们可以使用opencv获取视频流进而对usb camera或者本地的视频进行可视化。那么我们能否获取远程电脑的视频流,通过某些算法进行处理之后可视化出来?比如说我们想调用房间里的摄像头,查看????有没有捣乱;或者调用无人小车????的前置摄像头,和其共享视野,这些场景就需要通过某种途径获取到远程电脑(即使没有X服务)的视频流,然后在自己的笔记本上显示出来了。这篇文章将记录一个简单的pipeli...
摘要由CSDN通过智能技术生成

一、概述

通常我们可以使用opencv获取视频流进而对usb camera或者本地的视频进行可视化。那么我们能否获取远程电脑的视频流,通过某些算法进行处理之后可视化出来?比如说我们想调用房间里的摄像头,查看🐈有没有捣乱;或者调用无人小车🚙的前置摄像头,和其共享视野,这些场景就需要通过某种途径获取到远程电脑(即使没有X服务)的视频流,然后在自己的笔记本上显示出来了。

这篇文章将记录一个简单的pipeline,实现视频的读取、处理,并将视频流定向到HTML中。本文将涉及以下知识点:

复习基本的视频流获取

安装并调用dlib库中的人脸检测(基于hog)和特征点检测API对视频进行处理

通过Flask将视频流定向到HTML

通过threading确保并发线程安全(进而支持多clients同时使用该视频流)

通过Python生成器将获取的视频帧重新输出为“视频流”的形式

b462331dc34d

Fig. 1 效果展示:网页获取脚本中处理过的视频流

二、基本组件

本章复习/学习一下本文涉及到的一些问题,有了这些基本组件,后面只需要做一些衔接的工作就可以了。

2.1 获取本地视频/webcam的视频流

通常可以用OpenCV写个循环来获取、处理视频流。可以设置VideoCapture的参数为0或者视频文件路径来切换视频流的来源。

import cv2

cap = cv2.VideoCapture(0)

while(True):

# capture frame-by-frame

ret , frame = cap.read()

#转换为灰度图

gray = cv2.cvtColor(frame , cv2.COLOR_BGR2GRAY)

# rgb = frame[...,::-1] # 转换为RGB

# display the resulting frame

cv2.imshow('frame',gray)

if cv2.waitKey(1) &0xFF ==ord('q'): #按q键退出

break

# when everything done, release the capture

cap.release()

cv2.destroyAllWindows()

再看下Adrian封装的imutils.video.VideoStream,如果用web camera的话其实和上面的代码没有明显区别。比较不同的可能是将视频流用一个Thread类对象封装起来,将逐帧获取的过程作为一个守护进程来看待。最后结束时直接用Thread.stop()方法结束这个进程。然后省去了cap.release和destroyAllWindow这两个操作。

其实我并不理解这种通过Thread的做法有什么其他的考虑。这个回头如果遇到有类似的再深入了解吧。

Adrian的封装代码见下图:

b462331dc34d

Fig. 2 imutils中对cv2.VidewCapture的封装

不过VideoStream主要的功能是提供了一个使用树莓派设备获取视频流的选项。看了下源码,这部分主要是调用了另一个比较大的开源库picamera。这个库里面的代码动不动三四千行...果然写驱动的都是真的大佬..随手看了下,这个docs相当人性化,还给了一些树莓派相关的Setup和贴心小提示,比如不要热插拔相机之类的,后面等我的Pi回来以后详细了解下~

b462331dc34d

Fig. 3 picamera模块给出了树莓派相机相关的setup

言归正传,虽然imutils中的VideoStream和OpenCV的差别不大,这里还是试一试:

from imutils.vid

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值