Python將視頻轉(zhuǎn)換為圖片介紹
前言
代碼讓人頭禿,可是我喜歡上了代碼的邏輯感和代碼解決問題的力量。
(我要對這個專題的圖片進行修改,縮小看和我導頭像有點像QAQ)
代碼展示
此段代碼能夠?qū)崿F(xiàn)多個文件夾中多個視頻片段的轉(zhuǎn)換,代碼的具體含義可以參考注釋。
具體操作為將此段代碼復制粘貼到創(chuàng)建好的main.py文件,配置好第63行的源文件路徑,然后運行。
# 將四個文件夾中的多個視頻文件轉(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': # 這個根據(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)建一個關(guān)于文件名的子文件夾
files_in_video_path_list = os.listdir(video_path)
print(len(files_in_video_path_list)) # 獲取當前文件夾下文件個數(shù),用來判斷是否有其他類型的文件
file_count = 0 # 用于統(tǒng)計個數(shù),驗證是否全為視頻文件,會與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 # 視頻文件數(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 # 給每一幀標號
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 ') # 表示一個視頻片段已經(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\\'
# 進行轉(zhuǎn)換
for video_path in video_path_list:
video2image(video_path, image_save_dir)
結(jié)果展示
將創(chuàng)建’result’主文件夾和副文件夾

每個副文件夾下都將生成與視頻名相對應(yīng)的子文件夾,并按視頻幀數(shù)順序轉(zhuǎn)換為jpg圖片。

終端上將提示正在處理的文件路徑,正在對哪個視頻進行轉(zhuǎn)換和轉(zhuǎn)換完成提示。

總結(jié)
到此這篇關(guān)于Python將視頻轉(zhuǎn)換為圖片介紹的文章就介紹到這了,更多相關(guān)Python視頻轉(zhuǎn)換為圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python3實現(xiàn)網(wǎng)頁內(nèi)容轉(zhuǎn)換成PDF文檔和圖片
- python圖片格式轉(zhuǎn)換腳本
- Python實現(xiàn)圖片和視頻的相互轉(zhuǎn)換
- python中內(nèi)置函數(shù)ord()返回字符串的ASCII數(shù)值實例詳解
- Python如何存儲和讀取ASCII碼形式的byte數(shù)據(jù)
- Python 字節(jié)流,字符串,十六進制相互轉(zhuǎn)換實例(binascii,bytes)
- python中ASCII碼和字符的轉(zhuǎn)換方法
- Python 十六進制整數(shù)與ASCii編碼字符串相互轉(zhuǎn)換方法
- Python實現(xiàn)將圖片轉(zhuǎn)換為ASCII字符畫
相關(guān)文章
Python實現(xiàn)使用request模塊下載圖片demo示例
這篇文章主要介紹了Python實現(xiàn)使用request模塊下載圖片,結(jié)合完整實例形式分析了Python基于requests模塊的流傳輸文件下載操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2019-05-05
python實現(xiàn)微信每日一句自動發(fā)送給喜歡的人
這篇文章主要為大家詳細介紹了python實現(xiàn)微信每日一句自動發(fā)送給喜歡的人,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
Python3搭建http服務(wù)器的實現(xiàn)代碼
這篇文章主要介紹了Python3搭建http服務(wù)器的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-02-02
Python爬取商家聯(lián)系電話以及各種數(shù)據(jù)的方法
今天小編就為大家分享一篇Python爬取商家聯(lián)系電話以及各種數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11
python簡單幾步獲取各種DOS命令顯示的內(nèi)容詳解流程
你會用python獲取各種DOS命令顯示的內(nèi)容核心嗎?說的可不是返回值,是用system()函數(shù)調(diào)用windows操作系統(tǒng)的DOS命令來做點事情,需要的朋友可以參考下2021-10-10

