您好,登錄后才能下訂單哦!
Python如何將視頻轉換為圖片,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
代碼讓人頭禿,可是我喜歡上了代碼的邏輯感和代碼解決問題的力量。
(我要對這個專題的圖片進行修改,縮小看和我導頭像有點像QAQ)
此段代碼能夠實現多個文件夾中多個視頻片段的轉換,代碼的具體含義可以參考注釋。
具體操作為將此段代碼復制粘貼到創建好的main.py文件,配置好第63行的源文件路徑,然后運行。
# 將四個文件夾中的多個視頻文件轉換為圖片 import cv2 import os number_in_dir = [] # 可以去掉 def video2image(video_path, image_save_dir): # 1. 將圖片的存儲路徑加上源文件的文件夾名,如'Coffee_room_01'等。 if os.path.exists(video_path): # 判斷源路徑是否正確 print(video_path + '\t ok') if video_path.split('\\')[-2] != 'Videos': # 這個根據我文件路徑自行添加的 image_save_dir += video_path.split('\\')[-2] + '\\' else: image_save_dir += video_path.split('\\')[-3] + '\\' number_in_dir.append(len(os.listdir(video_path))) # 可以去掉 else: print(video_path + ' \033[0;37;41merror\033[0m') return # 2. 依次讀取源文件里的文件,如果后綴名是‘avi'或 'MP3',則創建一個關于文件名的子文件夾 files_in_video_path_list = os.listdir(video_path) print(len(files_in_video_path_list)) # 獲取當前文件夾下文件個數,用來判斷是否有其他類型的文件 file_count = 0 # 用于統計個數,驗證是否全為視頻文件,會與len(files_in_video_path_list)進行比較 for file_in_video_path in files_in_video_path_list: file_name = os.path.basename(file_in_video_path) if file_name.split('.')[-1] == 'avi' or file_name.split('.')[-1] == 'mp3': file_count += 1 # 視頻文件數+1 every_video_save_dir = file_name.split('.')[0] + '\\' if not os.path.exists(image_save_dir + every_video_save_dir): # 創建屬于相應文件夾的存儲路徑 os.makedirs(image_save_dir + every_video_save_dir) else: print(' \033[0;37;41merror\033[0m') break # 3. 打印正在處理文件的序號和他的文件名,并開始轉換 print(str(file_count) + ':' + file_name) cap = cv2.VideoCapture(video_path + file_name) flag = cap.isOpened() if not flag: print("open" + video_path + file_name + "error!") frame_count = 0 # 給每一幀標號 while True: frame_count += 1 flag, frame = cap.read() if not flag: # 如果已經讀取到最后一幀則退出 break if os.path.exists(image_save_dir + every_video_save_dir + str(frame_count) + '.jpg'): # 在源視頻不變的情況下,如果已經創建,則跳過 break cv2.imwrite(image_save_dir + every_video_save_dir + str(frame_count) + '.jpg', frame) cap.release() print(file_name + ' save to ' + image_save_dir + every_video_save_dir + 'finished ') # 表示一個視頻片段已經轉換完成 if file_count != len(files_in_video_path_list): print(' \033[0;37;41Maybe loss something\033[0m') if __name__ == '__main__': # 需要轉換的文件路徑列表(自定義修改) video_path_list = ['E:\\Datasets_FallDetection\\2 LE2I\Coffee_room_01\\Coffee_room_01\\Videos\\', 'E:\\Datasets_FallDetection\\2 LE2I\Home_01\\Home_01\Videos\\', 'E:\\Datasets_FallDetection\\2 LE2I\Lecture_room\\Lecture room\\', 'E:\\Datasets_FallDetection\\2 LE2I\\Office\\Office\\'] # 預期存儲在的主文件夾,即'result'文件夾 image_save_dir = '.\\result\\' # 進行轉換 for video_path in video_path_list: video2image(video_path, image_save_dir)
將創建’result’主文件夾和副文件夾
每個副文件夾下都將生成與視頻名相對應的子文件夾,并按視頻幀數順序轉換為jpg圖片。
終端上將提示正在處理的文件路徑,正在對哪個視頻進行轉換和轉換完成提示。
關于Python如何將視頻轉換為圖片問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。