【问题标题】:Open CV stream YouTube videoOpencv 流式传输 YouTube 视频
【发布时间】:2019-10-16 14:15:03
【问题描述】:

我希望能够使用 open cv 捕捉 YouTube 视频(直播和录制)。

我发现了下面的问题,但似乎基于 cmets 和我自己的试验,下面提供的代码/解决方案不适用于最近的开放 cv 版本。

Is it possible to stream video from https:// (e.g. YouTube) into python with OpenCV?

有没有办法通过最新的开放 cv 版本:opencv-python 4.1.0.25 流式传输 YouTube 视频?

我的目标是用它来测试几个随机视频流上的面部识别算法,这些视频流有人脸(例如新闻节目),以测试误报。

【问题讨论】:

  • 我认为opencv没有问题但是pafy。您可以通过使用 pafy 捕获所需 youtube 视频的流式 url 来检查(在参考链接中它是 play.url )。然后在网络浏览器中打开该 pafy.url 以检查它是否正常工作。

标签: python opencv video youtube


【解决方案1】:

以下是我用于将数据流式传输到 opencv 的方法。但我使用的是旧版本的 opencv 并自己链接到 caffe。

安装 Pafy 和 youtubedl

pip install pafy
pip install youtube_dl

安装后,从你想要的视频中复制 url。下面是示例代码

url = 'https://youtu.be/1AbfRENy3OQ'
urlPafy = pafy.new(url)
videoplay = urlPafy.getbest(preftype="webm")


cap = cv2.VideoCapture(videoplay.url)
while (True):
    ret,src = cap.read()
    cv2.imshow('src',src)
    #do your stuff here. 

cap.release()
cv2.destroyAllWindows()

但是如果你想要自动选择随机视频,那会有点复杂

您需要使用 YouTube-API 从一组搜索词中获取随机 VideoId(例如漂亮的脸,深假脸)

然后从查询的数据库中,为您的学习算法自动循环。以下是来自其他post的简短示例

import json
import urllib.request
import string
import random

count = 50
API_KEY = 'your_key'
random = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(3))

urlData = "https://www.googleapis.com/youtube/v3/search?key={}&maxResults={}&part=snippet&type=video&q={}".format(API_KEY,count,random)
webURL = urllib.request.urlopen(urlData)
data = webURL.read()
encoding = webURL.info().get_content_charset('utf-8')
results = json.loads(data.decode(encoding))

for data in results['items']:
    videoId = (data['id']['videoId'])
    print(videoId)
    #store your ids

但如果没有基本实况标签,就很难获得算法性能的量化衡量标准。因此,我建议从其中一个面部视频数据集中获取分数以进行有效计算。您需要正确生成的分数才能发布。

https://www.cs.tau.ac.il/~wolf/ytfaces/

【讨论】:

    猜你喜欢
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多