松鼠表情包在广大网友中传递快乐,红极一时。我想是因为Jenny长相可爱憨态可掬,圆脸大眼,在剧中经常摆出各种夸张的表情,所以被广大网友制作成各种表情包,深受广大网友喜爱沙雕网友。巧的是,我也是这支沙雕网友大军中的一员,通过各种渠道收集了一些珍妮龟表情包。但是,我想要的更多,只有拥有最多沙雕表情包的人,才能在斗图中立于不败之地,于是网上出现了一系列使用Python获取最全的珍妮龟表情包。本系列旨在获取越来越多的Squirtle表情,传递更多欢乐。!整个系列一共有三个子弹,每个子弹都使用Python作为编程语言,主要涉及网络爬虫、数据图像处理、机器学习等几个应用领域。今天是第一弹!如何通过爬取视频获取更多的松鼠表情包?这些循环表情无非是截取自动漫画《精灵宝可梦》,然后选择性地缩放或裁剪图片,然后在相应的图片上加上相关的文字。所以按照这个逻辑,我们需要先在这个视频上做文章。Squirtle作为御三家初代??的成员,主要活跃在《精灵宝可梦》第一章牧音,所以我们只需要考虑第一个视频,而在这个第一部专辑中有很多Squirrels。直接下载第一个视频费时费力。正好B站有个up主上传了包括珍妮龟在内的所有剧集。我在这里有点懒。我直接用B站@Henryhaohao写的非常好的视频爬虫,把专辑的视频全部下载到本地。视频裁剪现在所有的视频都已经下载好了,接下来就可以使用openCV将每个视频裁剪成图片了。这里的fps是帧率,意思是每秒刷新的图片数量,frames是整个视频的图片总数。defvedio_to_pic(path):vedio_path=os.listdir(path)count=0forvedioinvedio_path:videoCapture=cv2.VideoCapture()videoCapture.open(os.path.join(path,vedio,vedio+'.flv'))fps=videoCapture.get(cv2.CAP_PROP_FPS)frames=videoCapture.get(cv2.CAP_PROP_FRAME_COUNT)打印("fps=",fps,"frames=",frames)foriinrange(int(frames)):ret,frame=videoCapture.read()ifret:ifi%int(fps/5)==0:cv2.imwrite("pic/jieni{}_{}.jpg".format(count+1,i),frame)count+=1这里每帧只保存1/5的图片,因为每帧的图片都比较相似,获取该帧的所有图片有很大的冗余。至此,我们有大量可能包含松鼠的图片,下一篇会讲到如何利用机器学习来帮助我们过滤掉那些包含松鼠的图片!
