簡體   English   中英

opencv 視頻捕獲和讀取不會檢索所有幀。 返回不正確的幀數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM