Python提取視訊中圖片的示例(按幀、按秒)
阿新 • • 發佈:2020-10-24
一、按幀提取
#coding=utf-8 import os import cv2 def save_img(): #提取視訊中圖片 按照每幀提取 video_path = r'D:\\test\\' #視訊所在的路徑 f_save_path = 'D:\\aaa\\' #儲存圖片的上級目錄 videos = os.listdir(video_path) #返回指定路徑下的檔案和資料夾列表。 for video_name in videos: #依次讀取視訊檔案 file_name = video_name.split('.')[0] #拆分視訊檔名稱 ,剔除字尾 folder_name = f_save_path + file_name #儲存圖片的上級目錄+對應每條視訊名稱 構成新的目錄存放每個視訊的 os.makedirs(folder_name,exist_ok=True) #建立存放視訊的對應目錄 vc = cv2.VideoCapture(video_path+video_name) #讀入視訊檔案 c=0 #計數 統計對應幀號 rval=vc.isOpened() #判斷視訊是否開啟 返回True或Flase while rval: #迴圈讀取視訊幀 rval,frame = vc.read() #videoCapture.read() 函式,第一個返回值為是否成功獲取視訊幀,第二個返回值為返回的視訊幀: pic_path = folder_name+'/' if rval: cv2.imwrite(pic_path + file_name + '_' + str(c) + '.jpg',frame) #儲存為影象,儲存名為 資料夾名_數字(第幾個檔案).jpg cv2.waitKey(1) #waitKey()--這個函式是在一個給定的時間內(單位ms)等待使用者按鍵觸發;如果使用者沒有按下 鍵,則接續等待(迴圈) c = c + 1 else: break vc.release() print('save_success'+folder_name) save_img()
執行結果
二、按秒提取
#coding=utf-8 import os from cv2 import cv2 def save_img2(): #提取視訊中圖片 按照每秒提取 間隔是視訊幀率 video_path = r'D:\\test\\' #視訊所在的路徑 f_save_path = 'D:\\aaa\\' #儲存圖片的上級目錄 videos = os.listdir(video_path) #返回指定路徑下的檔案和資料夾列表。 for video_name in videos: #依次讀取視訊檔案 file_name = video_name.split('.')[0] #拆分視訊檔名稱 ,剔除字尾 folder_name = f_save_path + file_name #儲存圖片的上級目錄+對應每條視訊名稱 構成新的目錄存放每個視訊的 os.makedirs(folder_name,exist_ok=True) #建立存放視訊的對應目錄 vc = cv2.VideoCapture(video_path+video_name) #讀入視訊檔案 fps = vc.get(cv2.CAP_PROP_FPS) #獲取幀率 print(fps) #幀率可能不是整數 需要取整 rval=vc.isOpened() #判斷視訊是否開啟 返回True或Flase c = 1 while rval: # 迴圈讀取視訊幀 rval,frame = vc.read() # videoCapture.read() 函式,第一個返回值為是否成功獲取視訊幀,第二個返回值為返回的視訊幀: pic_path = folder_name + '/' if rval: if (c % round(fps) == 0): # 每隔fps幀進行儲存操作,可自行指定間隔 cv2.imwrite(pic_path + file_name + '_' + str(c) + '.jpg',frame) # 儲存為影象,儲存名為 資料夾名_數字(第幾個檔案).jpg cv2.waitKey(1) # waitKey()--這個函式是在一個給定的時間內(單位ms)等待使用者按鍵觸發;如果使用者沒有按下 鍵,則接續等待(迴圈) c = c + 1 else: break vc.release() print('save_success' + folder_name) save_img2()
執行結果
以上就是Python提取視訊中的幀圖片的示例的詳細內容,更多關於python 提取視訊圖片的資料請關注我們其它相關文章!