小白的自我救贖
數(shù)據(jù)說(shuō)明
兩種action recognition數(shù)據(jù)集:UCF101氢烘,Hdmb51,最新的ActivityNet堵第,Kinectics兩個(gè)數(shù)據(jù)集下載不下來(lái)弄诲,我太難了 /(ㄒoㄒ)/~~
Hdmb51數(shù)據(jù)說(shuō)明
其他數(shù)據(jù)集說(shuō)明
前期準(zhǔn)備
由于下載下來(lái)的數(shù)據(jù)集包颁,如UCF101一個(gè)文件夾铆帽,每個(gè)包含101個(gè)文件夾啡彬,這101個(gè)文件夾每個(gè)中包含100多個(gè)視頻文件羹与。目錄結(jié)構(gòu)為:
UCF101 -----101doc -----100多個(gè).avi文件
假定存儲(chǔ)文件位置為:
"./media/xidian/database/UCF101/"
創(chuàng)建一個(gè)UCF101_n_frames空文件夾,用于存放提取的幀圖像庶灿,
位置為:
"./media/xidian/database/UCF101_n_frames/"
- 打開(kāi)終端纵搁,cd到UCF101目錄下,輸入:
find . -type d >tmp.txt
- 在UCF101文件夾中會(huì)生成一個(gè).txt文件往踢,然后將文件復(fù)制到UCF101_n_frames文件夾中
- cd至UCF101_n_frames中腾誉,輸入:
xargs mkdir -p <tmp.txt
即可使得UCF101_n_frames和UCF101具有相同結(jié)構(gòu)的子文件夾。
參考博客
逐個(gè).avi文件的索引以及幀圖像的的保存:
import os
import sys
import subprocess
#%%
def class_process(dir_path, dst_dir_path, class_name):
class_path = os.path.join(dir_path, class_name)
if not os.path.isdir(class_path):
return
dst_class_path = os.path.join(dst_dir_path, class_name)
if not os.path.exists(dst_class_path):
os.mkdir(dst_class_path)
for file_name in os.listdir(class_path):
if '.avi' not in file_name:
continue
name, ext = os.path.splitext(file_name)#提取每個(gè).avi文件的名字部分峻呕,以便在.../UCF101_n_frames/XX/創(chuàng)建**.avi文件的名字命名**的文件夾
dst_directory_path = os.path.join(dst_class_path, name)
video_file_path = os.path.join(class_path, file_name)
try:
if os.path.exists(dst_directory_path):
if not os.path.exists(os.path.join(dst_directory_path, 'image_00001.jpg')):
subprocess.call('rm -r \"{}\"'.format(dst_directory_path), shell=True)
print('remove {}'.format(dst_directory_path))
os.mkdir(dst_directory_path)#創(chuàng)建**.avi文件的名字命名**的文件夾
else:
continue
else:
os.mkdir(dst_directory_path)
except:
print(dst_directory_path)
continue
cmd = 'ffmpeg -i \"{}\" -vf scale=-1:240 \"{}/image_%05d.jpg\"'.format(video_file_path, dst_directory_path)#視頻的讀取與保存
print(cmd)
subprocess.call(cmd, shell=True)
print('\n')
if __name__=="__main__":
dir_path = './media/xidian/database/UCF101/'
dst_dir_path = './media/xidian/database/UCF101_n_frames'
for class_name in os.listdir(dir_path):
class_process(dir_path, dst_dir_path, class_name)#索引.../UCF101/下所有子文件夾
未經(jīng)允許利职,禁止轉(zhuǎn)載