您好,登錄后才能下訂單哦!
這篇文章主要介紹了opencv如何讀取視頻并保存圖像,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
實習項目要做安全帽目標檢測,拿到了公司給的一些視頻數據,使用Opencv讀取視頻并每隔 1 s 1s 1s存儲一副圖像,下面是一些視頻數據
實現步驟 添加依賴庫
import cv2 import os
定義視頻路徑和圖像存儲路徑
video_path = './未戴安全帽視頻01/' image_path = './images/'
讀取視頻文件
video_files = [i for i in os.listdir(video_path) if i.split('.')[-1] in ['mp4']] len(video_files)
獲取視頻幀
# video_file:'./未戴安全帽視頻01/中建四局-東圍墻5_001_2021-03-22-18-04-28_2021-03-22-18-04-33.mp4', # pic_dir:'中建四局-東圍墻5_001_2021-03-22-18-04-28_2021-03-22-18-04-33' def get_image(video_file, pic_dir): if not os.path.exists(pic_dir): os.makedirs(pic_dir) # cv2讀取視頻文件 vc = cv2.VideoCapture(video_file) index = 0 # 判斷載入的視頻是否可以打開 rval = vc.isOpened() while rval: # 循環讀取視頻幀 index = index + 1 rval, frame = vc.read() # 每十幀保存一張圖片 if index * 10 % 1 == 0: if rval: # cv2.imshow("capture", frame) save_file = pic_dir + str(index).zfill(5) + '.png' cv2.imwrite(save_file, frame) # 存儲為圖像,保存名為文件夾名 cv2.waitKey(1) else: break vc.release() print("已保存%d" %(index - 1) + "張圖片") # video_file = './未戴安全帽視頻01/01.mp4' # pic_path = '01/' # get_image(video_file, image_path + pic_path)
遍歷視頻文件
for file in video_files: video_file = video_path + file pic_path = image_path + file.replace('.mp4', '/') get_image(video_file, pic_path)
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
已保存1張圖片
完整代碼
import cv2 import os def save_img(): video_path = r'F:\test\3.10' videos = os.listdir(video_path) for video_name in videos: file_name = video_name.split('.')[0] folder_name = video_path +'_'+ file_name os.makedirs(folder_name, exist_ok=True) print(video_path + '/' + video_name) vc = cv2.VideoCapture(video_path + '/' + video_name) # 讀入視頻文件 c = 0 rval = vc.isOpened() while rval: # 循環讀取視頻幀 c = c + 1 rval, frame = vc.read() if c%10 ==0: pic_path = folder_name + '/' if rval: cv2.imwrite(pic_path + str(c) + '.png', frame) # 存儲為圖像,保存名為文件夾名 cv2.waitKey(1) else: break vc.release() print('save_success') print(folder_name) save_img()
讀取路徑問題
問題:讀取視頻結果顯示沒有打開視頻,檢查發現視頻路徑錯誤,導致沒有正確打開
解決:可以在讀取之前檢查路徑,即判斷要保存的文件夾是否存在,不存在就創建該文件夾。代碼如下:
if not os.path.exists(path): os.makedirs(path)
中文路徑問題
問題:cv2.imwrite()保存圖像路徑不能存在中文字符,否則無法保存,并且沒有任何提示!!!
解決:改為英文路徑即可。
最終結果
感謝你能夠認真閱讀完這篇文章,希望小編分享的“opencv如何讀取視頻并保存圖像”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。