[英]opencv videocapture and read doesnt retrieve all frames. Returns incorrect number of frames
我有一個 29 分鍾長的 mp4 視頻,分辨率為 1536x2304。 我正在嘗試做的是創建一個數據加載器,它攝取 mp4 文件並提供給 CNN,但為此我需要使用 opencv 來檢索幀。 當我使用 cap = cv.VideoCapture("mp4 file") 和 ret, frame = cap.read() 時,我只收到大約 40 幀。
由於視頻長度為 29 分鍾,並且為 18fps,因此我期望的幀數約為 31320 幀,但我只得到 40 幀。真的很困惑,感謝任何幫助!
當您指定使用行ret, frame = cap.read()
來計算幀數時,我會假設您正在使用帶有 when to break
條件的while
循環。
您是否考慮過由於與VideoCapture
object 中的幀數無關的問題, while
循環可能已經結束? 或者,您可能已經多次調用cap.read()
方法,每次遞增到用於計算幀數的變量。
使用 OpenCV 獲取視頻中幀數的正確方法是:
import cv2 as cv
cap = cv.VideoCapture("file.mp4")
count = cap.get(cv2.CAP_PROP_FRAME_COUNT)
print(count)
(注意:如果您得到 output 0
,則可能找不到指定的文件名,需要更正。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.