python+opencv實(shí)現(xiàn)視頻抽幀示例代碼
1、數(shù)據(jù)集簡述:
雖然有主流龐大的COCO、VOC數(shù)據(jù)集,但是科研人員仍需要特殊領(lǐng)域要求的數(shù)據(jù)集,所以采用人工實(shí)地采集的方式進(jìn)行收集數(shù)據(jù)集圖像;通過拍照收集圖像過于繁瑣,所以通常是將攝像頭無規(guī)則的移動(dòng)旋轉(zhuǎn)以及遠(yuǎn)近拉縮,進(jìn)而錄制視頻;再通過視頻抽幀的方式得到大量的圖像,再將這些圖像進(jìn)行人工標(biāo)注處理。
博主通過一個(gè)水下錄制視頻為例子,當(dāng)這類圖像在網(wǎng)上鮮有存在時(shí),要求有關(guān)技術(shù)人員進(jìn)行實(shí)拍采集,下圖即為采集得到的視頻。
為了避免不符合項(xiàng)目要求的數(shù)據(jù)增強(qiáng),博主要求技術(shù)人員在錄制視頻時(shí)最大程度地讓攝像頭進(jìn)行移動(dòng)、旋轉(zhuǎn)以及遠(yuǎn)近調(diào)節(jié)等;這樣抽幀后的圖像更具有泛化性。
2、代碼介紹:
下面是采用以幀數(shù)為間隔的方法進(jìn)行視頻抽幀,博主個(gè)人認(rèn)為這樣子的方式調(diào)節(jié)間隔更加方便,更符合個(gè)人習(xí)慣。
import cv2 from PIL import Image import numpy as np cap = cv2.VideoCapture("D:/Download/ANMR0005.mp4") # 獲取視頻對象 isOpened = cap.isOpened # 判斷是否打開 # 視頻信息獲取 fps = cap.get(cv2.CAP_PROP_FPS) imageNum = 0 sum=0 timef=15 #隔15幀保存一張圖片 while (isOpened): sum+=1 (frameState, frame) = cap.read() # 記錄每幀及獲取狀態(tài) if frameState == True and (sum % timef==0): # 格式轉(zhuǎn)變,BGRtoRGB frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # 轉(zhuǎn)變成Image frame = Image.fromarray(np.uint8(frame)) frame = np.array(frame) # RGBtoBGR滿足opencv顯示格式 frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR) imageNum = imageNum + 1 fileName = 'D:/Download/video_image/image' + str(imageNum) + '.jpg' # 存儲(chǔ)路徑 cv2.imwrite(fileName, frame, [cv2.IMWRITE_JPEG_QUALITY, 100]) print(fileName + " successfully write in") # 輸出存儲(chǔ)狀態(tài) elif frameState == False: break print('finish!') cap.release()
3、代碼效果:
pycharm運(yùn)行py文件后結(jié)果框顯示的內(nèi)容:
視頻抽幀得到的圖像保存至指定的文件夾:
抽幀得到的圖片示例:
4、相關(guān)說明: ①本代碼依據(jù)錄制視頻、對opencv的理解以及大佬的項(xiàng)目代碼靈感進(jìn)行編寫;
②本數(shù)據(jù)集屬于私人閉源,不公開。
到此這篇關(guān)于python+opencv實(shí)現(xiàn)視頻抽幀的文章就介紹到這了,更多相關(guān)python opencv視頻抽幀內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3中正則模塊re.compile、re.match及re.search函數(shù)用法詳解
這篇文章主要介紹了Python3中正則模塊re.compile、re.match及re.search函數(shù)用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了re模塊 中re.compile、re.match及re.search函數(shù)的功能、參數(shù)、具體使用技巧與注意事項(xiàng),需要的朋友可以參考下2018-06-06基于Python實(shí)現(xiàn)商場抽獎(jiǎng)小系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實(shí)現(xiàn)一個(gè)簡單的商場抽獎(jiǎng)小系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-08-08利用Python實(shí)現(xiàn)一個(gè)簡易的截圖工具
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)一個(gè)簡易的截圖工具,可以截完圖之后顯示并且永遠(yuǎn)前置,感興趣的小伙伴可以嘗試一下2022-07-07python使用ctypes調(diào)用第三方庫時(shí)出現(xiàn)undefined?symbol錯(cuò)誤詳解
python中時(shí)間的庫有time和datetime,pandas也有提供相應(yīng)的時(shí)間處理函數(shù),下面這篇文章主要給大家介紹了關(guān)于python使用ctypes調(diào)用第三方庫時(shí)出現(xiàn)undefined?symbol錯(cuò)誤的相關(guān)資料,需要的朋友可以參考下2023-02-02Python?jieba分詞添加自定義詞和去除不需要長尾詞的操作方法
這篇文章主要介紹了Python?jieba分詞如何添加自定義詞和去除不需要長尾詞,主要介紹jieba的基礎(chǔ)用法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03