当前位置: 首页 > news >正文

公司网站开发 中山百度网站评级

公司网站开发 中山,百度网站评级,WordPress仿百度百家主题,程序开发总结在计算机视觉研究中,处理视频的时候,往往需要将视频抽帧成图片。如果多个视频都存放在一个文件夹里,并且希望抽帧出来的图片,以一个视频对应一个文件夹的形式存放,可以用以下代码,抽帧频率可自己手动修改&a…

在计算机视觉研究中,处理视频的时候,往往需要将视频抽帧成图片。如果多个视频都存放在一个文件夹里,并且希望抽帧出来的图片,以一个视频对应一个文件夹的形式存放,可以用以下代码,抽帧频率可自己手动修改,下面是抽所有帧的代码:

'''
批量提取视频的所有帧
'''
import os
import cv2
#视频地址
videos_src_path = '/home/videos/'
#存放图片的地址
videos_save_path = '/home/frames/'#返回videos_src_path路径下包含的文件或文件夹名字的列表(所有视频的文件名),按字母顺序排序
videos = os.listdir(videos_src_path)
for each_video in videos:#获取每个视频的名称each_video_name, _ = each_video.split('.')#创建目录保存抽出的帧os.mkdir(videos_save_path + each_video_name)#获取保存图片的完整路径,每个视频的图片帧存在以视频名为文件名的文件夹中each_video_save_full_path = os.path.join(videos_save_path, each_video_name) + '/'#每个视频的完整路径each_video_full_path = os.path.join(videos_src_path, each_video)#读入视频cap = cv2.VideoCapture(each_video_full_path)print(each_video_full_path)frame_count = 1success = Truewhile (success):#提取视频帧,success为是否成功获取视频帧(true/false),第二个返回值为返回的视频帧success, frame = cap.read()# 如果想间隔比如25帧抽一张,可以在下方if里加条件:frame_count % 25 == 0if success == True:#存储视频帧,%04d则每张图片以4位数命名,比如0001.jpgcv2.imwrite(each_video_save_full_path + "%04d.jpg" % frame_count, frame)frame_count += 1

主要用到的是cv2里的cv2.VideoCapture()read()

上面是所有视频存储在一个文件夹里,即如下的组织结构:

—videos—video1.mp4—video2.mp4—video3.mp4—video4.mp4...

但很多数据集,它不是将所有视频放在一个文件夹下,而是有各级子文件夹,每个子文件夹里放有同名的视频,而是如下这种组织形式:

—videos—user_0—run_0—video.mp4—run_1—video.mp4—run_2—video.mp4...—user_1—run_0—video.mp4—run_1—video.mp4...—user_2...

这个时候就要递归一下各级文件夹了,而且抽出的视频帧的文件夹的命名也不能是每个视频的名字,因为每个视频名字都一样,所以这个时候不仅要递归,而且要记录每个视频的路径,然后以视频的路径来命名这些图片文件夹。
我们先将每个视频的路径保存在txt文件里:

import  os
from os import pathdef scanner_video(inputSrc,video_list):file_list = os.listdir(inputSrc)for file in file_list:curr_file=path.join(inputSrc,file)#递归搜索if(path.isdir(curr_file)):scanner_video(curr_file,video_list)else:curr_file_name=curr_file.split(".")curr_file_type=curr_file_name[len(curr_file_name)-1]# 各种格式视频if curr_file_type=="mp4"or curr_file_type=="avi"or curr_file_type=="wmv" or curr_file_type=="vm4":video_list.append(curr_file)return video_listif __name__ == '__main__':inputSrc= '/home/Finalised/'# 保存txt的路径outputSrc= '/home/videoList.txt'video_list=[]video_list=scanner_video(inputSrc,video_list)f = open(outputSrc, 'w', encoding="utf-8", newline='\n')for file in video_list:f.write(file)f.write("\n")f.close()

然后读取这个videoList.txt文件,修改之前的代码,之前是直接按照文件夹下的视频名称来拼出每个视频的路径,要保存的图片文件夹的名字也是按照视频名称。现在每个视频的路径从txt文件中去读取,然后图片文件夹的名字是按照视频路径的一部分来截取,比如截取出 User_11/run_1,然后将"/“替换成”-"
即可得到User_11-run_1,这里就是第12个文件夹里的第2个文件夹里的视频抽帧后的图片被保存到的文件夹的名字。
注意的点是,txt的每一行的末尾都有个\n符号,得用strip('\n')来删除

import  os
import cv2# 图片保存路径
videos_save_path = '/home/dataset/frames/' 
lines = 0# 从txt中找每个视频的路径for each_video in open('/home/videoList.txt', encoding='utf-8'):# if each_video == '\n':#    continue# 原先的这种方式不行:这一行是换行符的话就跳过—— ——但换行符在each_video末尾,txt里没有空行# strip删除指定字符each_video = each_video.strip('\n')lines += 1last = each_video.rfind('/') # 返回最后一个'/'的下标# 根据实际路径情况设置切片的下标each_video_name = each_video[54:last] # /User_11/run_1/each_video_name = each_video_name.replace('/','-')#创建目录,每个来保存图片帧os.mkdir(videos_save_path + each_video_name)#获取保存图片的完整路径,每个视频的图片帧存在以视频名为文件名的文件夹中each_video_save_full_path = os.path.join(videos_save_path, each_video_name) + '/'#读入视频cap = cv2.VideoCapture(each_video)#输出调试信息print(cap.isOpened())print(each_video)frame_count = 1success = Truewhile (success):#提取视频帧,success为是否成功获取视频帧(true/false),第二个返回值为返回的视频帧success, frame = cap.read()# print(success)if success == True:#存储视频帧cv2.imwrite(each_video_save_full_path + "%04d.jpg" % frame_count, frame)frame_count += 1	# 查看读取到的txt的行数,此时就知道所有视频都抽取完了
print(lines)

当然也可以不用保存在txt里,可以两份代码合一块,直接读取视频的路径然后挨个抽帧。
但是先将视频的路径保存在txt文档里相对还是更有容错空间,比如部分视频没抽成功,可以修改txt的内容为没有读到的这批视频,然后再次运行后面这份代码。

http://www.yayakq.cn/news/881793/

相关文章:

  • 北京网站建设制作案例怎么分析网站用什么技术做的
  • 网站建设功能需求方案王烨飞微博
  • jsp可以做网站吗中国建设劳动学会网站
  • 网站建设 安庆建设摩托车125价格
  • 青岛网站建设方案外包模板之家如何免费下载
  • 洪涛怎么样海城市建设网站网络营销推广的方法有哪些
  • php招聘网站开发流程网站书店建设背景
  • 大兴做网站公司视频解析接口网站怎么做
  • wordpress添加新功能淘宝关键词优化技巧教程
  • 做网站框架图哪个在线网站好用网站不被收录怎么办
  • 公司的网站费怎样做会计分录咸阳网站制作公司
  • 贵州省城乡和建设厅网站首页抖音seo什么意思
  • excel做注册网站百度网站优化推广
  • 如何建设网站吸引人中国建设银行信用卡网站
  • 学校网站建设规划丹东建设安全监督网站
  • wordpress 网站暂停白杨seo教程
  • 大型行业门户网站开发建设方案wordpress 搭建多站点
  • 丹阳网站建设咨询内蒙古建设厅建筑网站
  • 黑龙江网络公司网站建设wordpress 国内知名
  • 凌云县城乡建设局网站海口网站建设哪家最好
  • 网站谷歌优化怎么做营销网络广告
  • 成都市微信网站建设公司seo培训机构排名
  • 给客户做非法网站建设网站需要租用服务器
  • 门户网站建设培训简报新乡市建设局网站
  • 养车网站开发如何找做网站的客户
  • 商务网站主页设计公司wordpress关闭评论窗口
  • 个人网站需要多大空间wordpress auto
  • logo灵感网站怎么做关键词优化排名
  • app如何推广以及推广渠道莱芜网站优化方案
  • 怎么把自己做的网站登录到网上网站优化要素