Python將視頻轉(zhuǎn)換為圖片介紹
前言
代碼讓人頭禿,可是我喜歡上了代碼的邏輯感和代碼解決問題的力量。
(我要對(duì)這個(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. 將圖片的存儲(chǔ)路徑加上源文件的文件夾名,如'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)證是否全為視頻文件,會(huì)與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)文件夾的存儲(chǔ)路徑
os.makedirs(image_save_dir + every_video_save_dir)
else:
print(' \033[0;37;41merror\033[0m')
break
# 3. 打印正在處理文件的序號(hào)和他的文件名,并開始轉(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)號(hà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ù)期存儲(chǔ)在的主文件夾,即'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è)副文件夾下都將生成與視頻名相對(duì)應(yīng)的子文件夾,并按視頻幀數(shù)順序轉(zhuǎn)換為jpg圖片。

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

總結(jié)
到此這篇關(guān)于Python將視頻轉(zhuǎn)換為圖片介紹的文章就介紹到這了,更多相關(guān)Python視頻轉(zhuǎn)換為圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(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如何存儲(chǔ)和讀取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實(shí)現(xiàn)使用request模塊下載圖片demo示例
這篇文章主要介紹了Python實(shí)現(xiàn)使用request模塊下載圖片,結(jié)合完整實(shí)例形式分析了Python基于requests模塊的流傳輸文件下載操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-05-05
python實(shí)現(xiàn)微信每日一句自動(dòng)發(fā)送給喜歡的人
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)微信每日一句自動(dòng)發(fā)送給喜歡的人,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
python解析HTML并提取span標(biāo)簽中的文本
在網(wǎng)頁開發(fā)和數(shù)據(jù)抓取過程中,我們經(jīng)常需要從HTML頁面中提取信息,尤其是span元素中的文本,span標(biāo)簽是一個(gè)行內(nèi)元素,通常用于包裝一小段文本或其他元素,在Python中,我們可以通過使用BeautifulSoup或lxml等庫來解析HTML并提取span標(biāo)簽中的文本2024-12-12
Python3搭建http服務(wù)器的實(shí)現(xiàn)代碼
這篇文章主要介紹了Python3搭建http服務(wù)器的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
Python爬取商家聯(lián)系電話以及各種數(shù)據(jù)的方法
今天小編就為大家分享一篇Python爬取商家聯(lián)系電話以及各種數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11
python簡(jiǎn)單幾步獲取各種DOS命令顯示的內(nèi)容詳解流程
你會(huì)用python獲取各種DOS命令顯示的內(nèi)容核心嗎?說的可不是返回值,是用system()函數(shù)調(diào)用windows操作系統(tǒng)的DOS命令來做點(diǎn)事情,需要的朋友可以參考下2021-10-10
Python實(shí)現(xiàn)定時(shí)自動(dòng)備份文件
隨著數(shù)據(jù)的不斷增長(zhǎng),文件備份變得越來越重要,這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)定時(shí)自動(dòng)備份文件功能,需要可以了解下2024-12-12

