本文給大家介紹一類從視頻里獲取視頻幀的辦法,因為單核獲取視頻幀速率比較慢,因而接下來我們增強了線程同步的辦法,感興趣的朋友能夠出手試一試
Python迅速獲取視頻幀(線程同步)
現在詳細介紹一下一類從視頻里獲取視頻幀的辦法,因為單核獲取視頻幀速率比較慢,因而接下來我們增強了線程同步的辦法。
1、獲取視頻幀
獲取視頻幀關鍵用了Opencv控制模塊。
在其中:
camera=cv2.Videocapture(),函數公式主要通過啟用筆記本電腦內置攝像頭載入視頻幀;
res,image=camera.read()函數公式通常是按幀載入短視頻,傳參“res”是布爾型,取得成功載入回到True,載入不成功回到False;
最終用cv2.imwrite()函數公式存放載入過的視頻幀。
視頻幀獲取方式可參考本文
import cv2 import os def video_to_frames(video_path,outPutDirName): times=0 #提取視頻的頻率,每1幀提取一個 frame_frequency=1 #如果文件目錄不存在則創建目錄 if not os.path.exists(outPutDirName): os.makedirs(outPutDirName) #讀取視頻幀 camera=cv2.VideoCapture(video_path) while True: times=times+1 res,image=camera.read() if not res: print('not res,not image') break #按照設置間隔存儲視頻幀 if times%frame_frequency==0: cv2.imwrite(outPutDirName+''+str(times)+'.jpg',image) print('圖片提取結束') #釋放攝像頭設備 camera.release()
2、線程同步方式
線程同步的應用關鍵應用了threading庫。
在其中:
threading.Thread()函數公式主要是用于啟用線程同步,在其中主要參數“target”是上邊需要用到的函數公式,主要參數“args”是上邊函數的輸入數據。
在其中相關線程同步的詳細介紹一下,及其速率提高效果可參考本文
import threading threading.Thread(target=video_to_frames,args=(video_path,outPutDirName)).start()
留意
1、extract_frame方方法的入參分別是:鍵入視頻地址、導出視頻地址、短視頻fps、視頻尺寸寬、視頻尺寸高、短視頻必須抽走的起點幀、短視頻必須抽走的完畢幀。
3、整體代碼
import cv2 import os import threading def video_to_frames(video_path,outPutDirName): times=0 #提取視頻的頻率,每1幀提取一個 frame_frequency=1 #如果文件目錄不存在則創建目錄 if not os.path.exists(outPutDirName): os.makedirs(outPutDirName) #讀取視頻幀 camera=cv2.VideoCapture(video_path) while True: times=times+1 res,image=camera.read() if not res: print('not res,not image') break if times%frame_frequency==0: cv2.imwrite(outPutDirName+''+str(times)+'.jpg',image) print('圖片提取結束') camera.release() if __name__=="__main__": input_dir=r'D:datasetscow_dataset'#輸入的video文件夾位置 save_dir=r'E:relate_codedataset'#輸出圖片到當前目錄video文件夾下 count=0#視頻數 for video_name in os.listdir(input_dir): video_path=os.path.join(input_dir,video_name) outPutDirName=os.path.join(save_dir,video_name[:-4]) threading.Thread(target=video_to_frames,args=(video_path,outPutDirName)).start() count=count+1 print("%s th video has been finished!"%count)
補充
還可以利用Python實現抽取剔除視頻幀工具
代碼
下面是使用opencv對視頻中間幾幀抽取的方法。
主要的思路是在讀取frame的時候,順便把幀寫下來。
同時如果不是需要抽取剔除的幀,直接continue到下個循環。
樣例代碼如下,主要按照MP4格式進行處理。
#!/user/bin/env python #coding=utf-8 """ project:csdn-pro author:劍客阿良_ALiang file:test.py ide:PyCharm time:2022-06-30 17:55:48 """ import cv2 #視頻抽幀 def extract_frame(video_path:str,result_path:str,fps,weight,height,start,end): fourcc=cv2.VideoWriter_fourcc(*'mp4v') videoWriter=cv2.VideoWriter(result_path,fourcc,fps,(weight,height)) vc=cv2.VideoCapture(video_path) if vc.isOpened(): ret,frame=vc.read() else: ret=False count=0#count the number of pictures while ret: ret,frame=vc.read() if start<=count<=end: count+=1 continue else: videoWriter.write(frame) count+=1 print(count) videoWriter.release() vc.release() if __name__=='__main__': extract_frame('C:UsersxxxDesktop123.mp4','C:UsersxxxDesktop114.mp4',25,640,368,119,125)
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/128691.html
摘要:將圖片的處理方法放到視頻中的每一幀,再加上彈幕飛過的效果,就完成了版的智能防擋彈幕。不知道站的實現方法是怎樣,是否有人工干預,是否有預計算。 某天代碼寫得老眼昏花,去B站上摸魚,突然發現奇怪的現象: showImg(https://segmentfault.com/img/remote/1460000017911829?w=600&h=284); 喲呵,B站竟然做了 視頻前景提取 ,把...
摘要:這次開始學習從攝像頭獲取視頻使用獲取視頻要獲取視頻,需要創建一個對象,參數可以是設備索引攝像頭索引或視頻文件的名稱。 這次開始學習Getting Started with Videos 1從攝像頭獲取視頻 使用cv2.VideoCapture()獲取視頻. cv2.VideoCapture(builtins.object) 要獲取視頻,需要創建一個VideoCapture對象,參數可以...
摘要:通過利用一系列利用視頻局部性的優化,顯著降低了在每個幀上的計算量,同時仍保持常規檢索的高精度。的差異檢測器目前是使用逐幀計算的邏輯回歸模型實現的。這些檢測器在上的運行速度非常快,每秒超過萬幀。也就是說,每秒處理的視頻幀數超過幀。 視頻數據正在爆炸性地增長——僅英國就有超過400萬個CCTV監控攝像頭,用戶每分鐘上傳到 YouTube 上的視頻超過300小時。深度學習的進展已經能夠自動分析這些...
摘要:摘要本文介紹使用和完成視頻流目標檢測,代碼解釋詳細,附源碼,上手快。將應用于視頻流對象檢測首先打開文件并插入以下代碼同樣,首先從導入相關數據包和命令行參數開始。 摘要:?本文介紹使用opencv和yolo完成視頻流目標檢測,代碼解釋詳細,附源碼,上手快。 在上一節內容中,介紹了如何將YOLO應用于圖像目標檢測中,那么在學會檢測單張圖像后,我們也可以利用YOLO算法實現視頻流中的目標檢...
摘要:身為一名前業務程序員和現前端程序員,這樣的功能還是陌生的領域。需求使用加攝像頭,通過人臉檢測,完成自動拍照功能。在的屏幕上,顯示攝像頭的實時畫面,要是畫面中檢測出人臉,則觸發拍照。這樣做的效果能夠獲得更高的,同時還能完成更遠距離臉部的捕獲。 因為項目原因,需要使用人臉檢測(face detection)功能。身為一名前JAVA業務程序員和現前端程序員,這樣的功能還是陌生的領域。那能不能...
閱讀 926·2023-01-14 11:38
閱讀 899·2023-01-14 11:04
閱讀 758·2023-01-14 10:48
閱讀 2063·2023-01-14 10:34
閱讀 965·2023-01-14 10:24
閱讀 844·2023-01-14 10:18
閱讀 512·2023-01-14 10:09
閱讀 590·2023-01-14 10:02