有关脚本的帖子,该脚本可从youtube下载视频并识别其中的文本。 我决定立即开始实际实施。 “ Vdudictionary”-Python中英雄“ Vdud”引号集合的脚本收集器。 不需要介绍Yuri Dud及其项目“ Vdud”。 最热门的采访很有趣。 尤里·亚历山德罗维奇(Yuri Alexandrovich)知道如何制作有趣的节目,无论您知道某个特定问题的英雄,是他的粉丝,还是第一次听到这个名字。
你有几厘米? 你对普京怎么说? 您在听OXY吗?
这些问题和许多其他问题现在与Dudem有关。 当受访者说出一个充满智慧的短语时,有爱心的编辑人员会与您一起在监视器的屏幕上仔细显示它,以将要点传达给我们。 我的目标是明确几代人的智慧,并创建字典“ Vdudexicon”或“ Vdudictionary”。
自然,即使没有特别的IT背景负担,一个人也不必用手收集这些说法。 为此,我绘制了一个python脚本。

首先,我们需要一个要处理的文件。 要从Youtube下载视频,我使用了pytube模块。
pip install pytube
从youtube下载文件的示例
from pytube import YouTube a=YouTube('https://www.youtube.com/watch?v=RNbXm8WKmow') a.streams.first().download()
该文件已下载。 现在,我们将开始使用当代人的智慧以及我们时代英雄的谚语,有条不紊地确定具有集中意义的框架。

在较早的版本中没有矩形板,因此我们可以在屏幕底部搜索文本。 在新版本中,您可以使用相同的旧OpenCV来搜索矩形,这将使您能够从视频中获取帧。
a,contours,h = cv2.findContours(gray3, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) for i in contours: cv2.drawContours(gray3,[i],0,(0,0,255),1)
要在raspberry3上为python3安装cv2,由于依赖关系,必须安装许多软件包。 也许有些软件包是多余的,这是由于我的经验不足,这就是一切的开始。
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get -y install libopencv-dev sudo apt-get -y install build-essential checkinstall cmake pkg-config yasm sudo apt-get -y install libtiff4-dev libjpeg-dev libjasper-dev sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev sudo apt-get -y install python-dev python-numpy sudo apt-get -y install libtbb-dev sudo apt-get -y install libqt4-dev libgtk2.0-dev sudo apt-get -y install libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev pip install opencv-python
我们把tesseract-这是光学文本识别所必需的OCR引擎。
sudo apt-get install tesseract-ocr sudo pip3 install pytesseract sudo pip3 install tesseract
这些发行版使用非常特定的耳机,因此很难识别。 通常,我们为西里尔字母安装
字典 。 下载并传输到/ usr / share / tesseract-ocr / tessdata。

输入处的脚本接收youtube上视频的地址。 它下载文件,在5秒钟内开始处理一帧。 如果框架中有一个正方形,则将其切出,使其变色,增加对比度并加以识别。 如果字符串少于15个字符,请不要考虑。 当然,您可以使用少于15个字符的字符串,但是正如该程序的女主人公之一所说:
-男孩,我不知道你的生活如何细小。我们在youtube中输入了日志文件的文本,时间和指向当前时间的链接。 我们跳过了5秒(不要问为什么首先想到这个数字,检查在这段时间内没有找到两个引号的重叠部分)。 您可以删除视频文件,然后继续下一个版本。
完整的脚本代码:Python 3脚本 import cv2 import pytesseract import numpy as np from pytube import YouTube import os nameofvideo="RNbXm8WKmow" a=YouTube('https://www.youtube.com/watch?v='+nameofvideo) a.streams.first().download() title=a.title title2=title.replace("/","").replace(",","").replace(".","")+".mp4" os.rename(title2, "youtubefile.mp4") print(title) f=open('/var/www/python/'+str(nameofvideo)+'.txt','w') f.write(title+"<br>") f.write('<table><tr><td></td><td></td><td></td></tr>') spisoksimvolovpodudalenie=["*","/","|","\\",")","(","}","{","+","`","~","№","",":","$","#","@","%","[","]","&","^","' "] def udaleniesimvolov(stroka): for element in spisoksimvolovpodudalenie: stroka=stroka.replace(element,"") return stroka vidcap = cv2.VideoCapture('youtubefile.mp4') vidcap.set(cv2.CAP_PROP_POS_AVI_RATIO,1) durationsec=int(vidcap.get(cv2.CAP_PROP_POS_MSEC)/1000) print("duration: "+str(durationsec)+" sec") for thissec in range(0,durationsec,5): vidcap.set(cv2.CAP_PROP_POS_MSEC,thissec*1000) success,image = vidcap.read() gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) gray2 = cv2.addWeighted( gray, 1.5, gray, 0, 0.5) gray3 = gray2[450:670,0:1280] if success: print(str(thissec)+" sec.") text = udaleniesimvolov(pytesseract.image_to_string(gray3, lang='rus')) if len(text)>15: print (text) f.write('<tr><td>'+str(thissec)+'</td><td>'+text+'</td><td><a href="https://www.youtube.com/watch?v='+nameofvideo+"&t="+str(thissec)+'"></a></td></tr>') print("----") f.write('</table>') f.close()
脚本示例Tolokonnikova-双性恋,面部,监狱/ vDud
时间c。 | 报价单 | |
95 | “活动家不应该讨厌薄荷糖。 他们必须尝试去理解, 那分就是一分“
| → |
195 | PETER VERZILOV-参加猫咪大赛的人 前霍万德·希普·托洛科尼科娃
| → |
255 | 叶卡捷琳娜(Ekaterina Samutsevich) | → |
570 | 我喜欢针织品! | → |
595 | 'vLADMTSR sorbyPn ,
| → |
990 | PETER VERZILOV与父母一起住在日本。 彼得的父亲-核物理学家
| → |
995 | PETER VERZILOV与父母一起住在日本。 彼得的父亲-核物理学家
| → |
1270 | 2018年9月11日PETER vrzipov住院 毒物部 市临床医院
| → |
1275 | 9月15日由私人飞机交付 前往柏林诊所
| → |
1280 | 2018年9月18日,柏林医生 相反,VERZILOV被SCOPOLAMIN解毒。 9月26日从柏林诊所撤离
| → |
1285 | 2018年9月18日柏林医生声明 相反,VERZILOV被SCOPOLAMIN解毒。 9月26日从柏林诊所撤离
| → |
1395 | “ MEDIAZONE”-有关法院的intravrnvt-eddniv, 逮捕和俄罗斯。 主要在当年的2014年圣 希望tol_okonnikovoy和MARIEI Alekhinoi
| → |
1590 | “如果是SCARY价格表? Nonsendchit, 你必须自己
| → |
1760 | 小野洋子-公众人物,乔的遗“” ... 聚乙烯 副主席,艺术家,
| → |
2040年 | “如果某人是疯子, 这是值得尊重的原因!-“
| → |
2330 | “内部妈妈”
| → |
2425 | 风筝之城-日前的城市_根据传说, 在下诺夫哥罗德地区的大部分地区, 在SVETLOYAR湖的海滩上
| → |
2515 | “我们向失败者展示并提供帮助 zdvlichiny和作家»
| → |
2550 | 现在-俄罗斯的坚决反对›。 '' 在美国的生活和工作
| → |
2745 | 托洛孔尼科娃在661天监狱中通过。 。 从2012年3月3日到2013年12月23日 在md。
| → |
2985 | VPTSN-吊杆上描述的条款 LGBT社区男生' 00开关“ DERDER MALYO____A”
| → |
2990 | VTsTSN-吊杆上描述的术语_ LGBT社区类似女孩 带着“男孩子”的腰包
| → |
3280 | “俄罗斯时间”井 ; B?
| → |
3290 | SHIZO-惩罚绝缘子。 矫正部门 在哪里为连续模式的内容定位了摄像机。 放置在惩罚绝缘子中的人, 权利受到明显限制 ,›,-“
| → |
3315 | “男人,坐了很久。” E; 重新更新他的生活”; 3
| → |
3510 | 在基督殿堂中得到晋升之后-“付款人被确定并 RPZZU KUT的三名代表被谴责 希望托洛科尼科娃,玛丽亚·阿莱欣和叶卡捷琳娜·萨穆茨维奇
| → |
3540 | 叶卡捷琳娜 连续两年获得
| → |
3660 | “ YOUTH受到了极大的创伤。 __ 该增值税没有专项透支”; ''
| → |
3740 | 希望托洛科尼科娃(HOPE TOLOKONIKOVA)两次宣布饥饿 在第14号《摩尔多瓦殖民地》中对翻译的要求 在另一处处罚
| → |
4275 | 关于RZZU RUT股票医疗人员进入游戏的演讲»_ 在2018年FIFA世界莫斯科决赛中
| → |
4495 | ‹ '' “游戏与位置的结合”
| → |
4735 | “如果我有不良的韵律和良好的条件, 我会选择坏的
| → |
4755 | “动物园历史”
| → |
4800 | BERNIE SANDERS-候选人的姓名(美国) 在选举2016_ODA中。 丧失优先权 希帕里·克林顿 -- | → |
4820 | 。 与错 现实性 _umvdiv说ndRAznBіkh语言学
| → |
4865 | “ Zdorny慢跑”
| → |
5055 | »”“ “ REP是对现实的理解”
| → |
显然,该脚本在识别“特定” WOOD字体方面存在一些问题。 在为OCR最终确定字典文件并通过PyEnchant对文本进行后期处理时,我看到了解决此问题的方法。
稍作改进,该脚本可用于搜索嵌入的字幕,识别它们并自动翻译成另一种语言。
如果您可以鼓励Yuri了解这项实验,请立即进行。 #habr #vdudictionary
VK ,
FB 。
感谢您的关注! 脚本和帖子是在我为
高尔夫捡球机器人项目研究OpenCV时进行一次幻想飞行而产生的。