Python将AVI视频抽帧成图片保存
生活随笔
收集整理的這篇文章主要介紹了
Python将AVI视频抽帧成图片保存
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最近做項(xiàng)目需要將AVI格式的視頻,一幀一幀保存成PNG格式的圖片,在CSDN上搜索之后進(jìn)行了匯總。
由于項(xiàng)目的特殊性,一個(gè)文件夾中包含很多視頻文件,要求將每個(gè)視頻文件抽幀之后的圖片保存在單獨(dú)的文件夾中,就要求將不斷創(chuàng)建新的文件夾,具體如下:
1.首先是讀取視頻文件的路徑:
video_path = "E:/***/" # 設(shè)置為視頻文件存儲(chǔ)的路徑即可 img_path = 'E:/***/'? ? #?設(shè)置為圖片文件存儲(chǔ)路徑if not os.path.exists(img_path): # 如果存儲(chǔ)圖片的文件夾不存在,自動(dòng)創(chuàng)建保存圖片文件夾os.makedirs(img_path)filename = os.listdir(video_path)? ? #?得到視頻文件的文件名 for save_name in filename:#?print(save_name.split('.')[0])? ? name1 = save_name.split('.')[0]? ? # 得到無后綴的文件名if not os.path.exists(img_path + name1): # 如果存儲(chǔ)圖片的文件夾不存在,自動(dòng)創(chuàng)建保存圖片文件夾os.makedirs(img_path + name1)? ? #?創(chuàng)建以視頻文件名為名稱的文件夾2.?進(jìn)行幀數(shù)選擇、視頻文件讀取和圖片保存
n = 0 start_name = '0000000.png' timeF = 1 # 幀數(shù)選擇name = video_path + save_name? ? #?視頻文件路徑 cv = cv2.VideoCapture(name) # 讀入視頻文件,命名cvif cv.isOpened(): # 判斷是否正常打開rval, frame = cv.read()i = 1 else:rval = Falseprint('open video error!!')while rval: # 正常打開 開始處理rval, image = cv.read()jpg_name =img_path + name1 + '/' + str(int(start_name[0:-4]) + n).zfill(6) + '.png' # 命名保存的圖片if (i % timeF == 0): # 每隔timeF幀進(jìn)行存儲(chǔ)操作n += 1try:img = Image.fromarray(image)img.save(jpg_name)#cv2.imwrite(jpg_name, image) # 存儲(chǔ)為圖像except:passprint(jpg_name)i += 1 cv2.waitKey(1) cv.release() print(name + ' done')最后,整體代碼如下所示:
import cv2 import os from PIL import Imageif __name__ == "__main__":video_path = "E:/項(xiàng)目/Data/MV-CB060-10GC-S (L27457211)/" # 設(shè)置為視頻文件存儲(chǔ)的路徑即可img_path = 'E:/項(xiàng)目/img/'if not os.path.exists(img_path): # 如果存儲(chǔ)圖片的文件夾不存在,自動(dòng)創(chuàng)建保存圖片文件夾os.makedirs(img_path)filename = os.listdir(video_path)for save_name in filename:print(save_name.split('.')[0])name1 = save_name.split('.')[0]if not os.path.exists(img_path + name1): # 如果存儲(chǔ)圖片的文件夾不存在,自動(dòng)創(chuàng)建保存圖片文件夾os.makedirs(img_path + name1)n = 0start_name = '0000000.png'timeF = 5 # 幀數(shù)選擇name = video_path + save_namecv = cv2.VideoCapture(name) # 讀入視頻文件,命名cvif cv.isOpened(): # 判斷是否正常打開rval, frame = cv.read()i = 1else:rval = Falseprint('open video error!!')while rval: # 正常打開 開始處理rval, image = cv.read()jpg_name =img_path + name1 + '/' + str(int(start_name[0:-4]) + n).zfill(6) + '.png' # 命名保存的圖片if (i % timeF == 0): # 每隔timeF幀進(jìn)行存儲(chǔ)操作n += 1try:img = Image.fromarray(image)img.save(jpg_name)#cv2.imwrite(jpg_name, image) # 存儲(chǔ)為圖像except:passprint(jpg_name)i += 1cv2.waitKey(1)cv.release()print(name + ' done')print('cut video done')總結(jié)
以上是生活随笔為你收集整理的Python将AVI视频抽帧成图片保存的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle各种版本下“示例数据库的创建
- 下一篇: 移动阅读:用户的刚需在哪里?