Python將視頻轉(zhuǎn)換為圖片介紹
前言
代碼讓人頭禿,可是我喜歡上了代碼的邏輯感和代碼解決問題的力量。
(我要對這個(gè)專題的圖片進(jìn)行修改,縮小看和我導(dǎo)頭像有點(diǎn)像QAQ)
代碼展示
此段代碼能夠?qū)崿F(xiàn)多個(gè)文件夾中多個(gè)視頻片段的轉(zhuǎn)換,代碼的具體含義可以參考注釋。
具體操作為將此段代碼復(fù)制粘貼到創(chuàng)建好的main.py文件,配置好第63行的源文件路徑,然后運(yùn)行。
# 將四個(gè)文件夾中的多個(gè)視頻文件轉(zhuǎn)換為圖片 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': # 這個(gè)根據(jù)我文件路徑自行添加的 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. 依次讀取源文件里的文件,如果后綴名是‘a(chǎn)vi'或 'MP3',則創(chuàng)建一個(gè)關(guān)于文件名的子文件夾 files_in_video_path_list = os.listdir(video_path) print(len(files_in_video_path_list)) # 獲取當(dāng)前文件夾下文件個(gè)數(shù),用來判斷是否有其他類型的文件 file_count = 0 # 用于統(tǒng)計(jì)個(gè)數(shù),驗(yàn)證是否全為視頻文件,會與len(files_in_video_path_list)進(jìn)行比較 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 # 視頻文件數(shù)+1 every_video_save_dir = file_name.split('.')[0] + '\\' if not os.path.exists(image_save_dir + every_video_save_dir): # 創(chuàng)建屬于相應(yīng)文件夾的存儲路徑 os.makedirs(image_save_dir + every_video_save_dir) else: print(' \033[0;37;41merror\033[0m') break # 3. 打印正在處理文件的序號和他的文件名,并開始轉(zhuǎn)換 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 # 給每一幀標(biāo)號 while True: frame_count += 1 flag, frame = cap.read() if not flag: # 如果已經(jīng)讀取到最后一幀則退出 break if os.path.exists(image_save_dir + every_video_save_dir + str(frame_count) + '.jpg'): # 在源視頻不變的情況下,如果已經(jīng)創(chuàng)建,則跳過 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 ') # 表示一個(gè)視頻片段已經(jīng)轉(zhuǎn)換完成 if file_count != len(files_in_video_path_list): print(' \033[0;37;41Maybe loss something\033[0m') if __name__ == '__main__': # 需要轉(zhuǎn)換的文件路徑列表(自定義修改) 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\\'] # 預(yù)期存儲在的主文件夾,即'result'文件夾 image_save_dir = '.\\result\\' # 進(jìn)行轉(zhuǎn)換 for video_path in video_path_list: video2image(video_path, image_save_dir)
結(jié)果展示
將創(chuàng)建’result’主文件夾和副文件夾
每個(gè)副文件夾下都將生成與視頻名相對應(yīng)的子文件夾,并按視頻幀數(shù)順序轉(zhuǎn)換為jpg圖片。
終端上將提示正在處理的文件路徑,正在對哪個(gè)視頻進(jìn)行轉(zhuǎn)換和轉(zhuǎn)換完成提示。
總結(jié)
到此這篇關(guān)于Python將視頻轉(zhuǎn)換為圖片介紹的文章就介紹到這了,更多相關(guān)Python視頻轉(zhuǎn)換為圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python3實(shí)現(xiàn)網(wǎng)頁內(nèi)容轉(zhuǎn)換成PDF文檔和圖片
- python圖片格式轉(zhuǎn)換腳本
- Python實(shí)現(xiàn)圖片和視頻的相互轉(zhuǎn)換
- python中內(nèi)置函數(shù)ord()返回字符串的ASCII數(shù)值實(shí)例詳解
- Python如何存儲和讀取ASCII碼形式的byte數(shù)據(jù)
- Python 字節(jié)流,字符串,十六進(jìn)制相互轉(zhuǎn)換實(shí)例(binascii,bytes)
- python中ASCII碼和字符的轉(zhuǎn)換方法
- Python 十六進(jìn)制整數(shù)與ASCii編碼字符串相互轉(zhuǎn)換方法
- Python實(shí)現(xiàn)將圖片轉(zhuǎn)換為ASCII字符畫
相關(guān)文章
刪除python pandas.DataFrame 的多重index實(shí)例
今天小編就為大家分享一篇刪除python pandas.DataFrame 的多重index實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06Python基于select實(shí)現(xiàn)的socket服務(wù)器
這篇文章主要介紹了Python基于select實(shí)現(xiàn)的socket服務(wù)器,實(shí)例分析了Python基于select與socket模塊實(shí)現(xiàn)socket通信的相關(guān)技巧,需要的朋友可以參考下2016-04-04基于Python實(shí)現(xiàn)一個(gè)簡易的數(shù)據(jù)管理系統(tǒng)
為了方便的實(shí)現(xiàn)記錄數(shù)據(jù)、修改數(shù)據(jù)沒有精力去做一個(gè)完整的系統(tǒng)去管理數(shù)據(jù)。因此,在python的控制臺直接實(shí)現(xiàn)一個(gè)簡易的數(shù)據(jù)管理系統(tǒng),包括數(shù)據(jù)的增刪改查等等。感興趣的可以跟隨小編一起學(xué)習(xí)一下2021-12-12Python直接使用plot()函數(shù)畫圖的方法實(shí)例
Python非常簡單而又非常強(qiáng)大,它的功能之一就是畫出漂亮的圖表,實(shí)現(xiàn)數(shù)據(jù)的可視化,下面這篇文章主要給大家介紹了關(guān)于Python直接使用plot()函數(shù)畫圖的相關(guān)資料,需要的朋友可以參考下2022-05-05Python3之字節(jié)串bytes與字節(jié)數(shù)組bytearray的使用詳解
今天小編就為大家分享一篇Python3之字節(jié)串bytes與字節(jié)數(shù)組bytearray的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python讀取pdf、word、excel、ppt、csv和txt文件提取所有文本
這篇文章主要給大家介紹了關(guān)于Python讀取pdf、word、excel、ppt、csv和txt文件提取所有文本的相關(guān)資料,文中通過代碼示例將實(shí)現(xiàn)的方法介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08