python+opencv實(shí)現(xiàn)視頻抽幀示例代碼
1、數(shù)據(jù)集簡(jiǎn)述:
雖然有主流龐大的COCO、VOC數(shù)據(jù)集,但是科研人員仍需要特殊領(lǐng)域要求的數(shù)據(jù)集,所以采用人工實(shí)地采集的方式進(jìn)行收集數(shù)據(jù)集圖像;通過(guò)拍照收集圖像過(guò)于繁瑣,所以通常是將攝像頭無(wú)規(guī)則的移動(dòng)旋轉(zhuǎn)以及遠(yuǎn)近拉縮,進(jìn)而錄制視頻;再通過(guò)視頻抽幀的方式得到大量的圖像,再將這些圖像進(jìn)行人工標(biāo)注處理。
博主通過(guò)一個(gè)水下錄制視頻為例子,當(dāng)這類(lèi)圖像在網(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") # 獲取視頻對(duì)象
isOpened = cap.isOpened # 判斷是否打開(kāi)
# 視頻信息獲取
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滿(mǎn)足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)說(shuō)明: ①本代碼依據(jù)錄制視頻、對(duì)opencv的理解以及大佬的項(xiàng)目代碼靈感進(jìn)行編寫(xiě);
大佬的項(xiàng)目代碼地址
②本數(shù)據(jù)集屬于私人閉源,不公開(kāi)。
到此這篇關(guān)于python+opencv實(shí)現(xiàn)視頻抽幀的文章就介紹到這了,更多相關(guān)python opencv視頻抽幀內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信