我希望能够使用开放式简历捕获YouTube视频(实时和录制)。
我发现了以下问题,但似乎是基于评论和我自己的尝试,即下面提供的代码/解决方案不适用于最新的开放cv版本。
Is it possible to stream video from https:// (e.g. YouTube) into python with OpenCV?
是否可以通过最新的开放cv版本流传输YouTube视频:opencv-python 4.1.0.25?
我的目标是使用此功能在具有人脸(例如新闻节目)的多个随机视频流上测试面部识别算法,以测试误报。
答案 0 :(得分:0)
下面是我用于将数据流传输到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
但是如果没有地面真相标签,就很难对您的算法表现进行定量评估。因此,我建议从一个面部视频数据集中获取一个分数,以进行有效的计算。您需要正确生成的分数才能发布。