[英]OpenCV set() and read() function is too slow (Python)
我想從某個范圍循環幀,並將 append 循環到一個數組中。 問題是,它太慢了。 我已經檢查了 function 需要多長時間,我認為這很慢。 這是我當前的代碼:
imgs = []
for j in range(range1, range2):
video.set(cv.CAP_PROP_POS_FRAMES, j)
ret, frame = video.read()
imgs.append(frame)
我還嘗試用video.retrieve(video.grab())
替換imgs.append(frame)
,但性能並沒有太大差異。 有沒有更好的解決方案/替代方法來執行此代碼的功能?
哦,哇,nvm。 設置使這變慢:
內線時間:15.308052062988281
外時間:0.4459998607635498
import cv2
import time
def setInside(cap, start, end):
imgs = [];
for a in range(start, end):
cap.set(cv2.CAP_PROP_POS_FRAMES, a);
_, frame = cap.read();
imgs.append(frame);
def setOutside(cap, start, end):
imgs = [];
cap.set(cv2.CAP_PROP_POS_FRAMES, start);
for a in range(start, end):
_, frame = cap.read();
imgs.append(frame);
# open vidcap
cap = cv2.VideoCapture("202534.avi");
# bounds
start = 0;
end = 2000;
# time it
start_time = time.time();
setInside(cap, start, end);
print("Inside Time: " + str(time.time() - start_time));
start_time = time.time();
setOutside(cap, start, end);
print("Outside Time: " + str(time.time() - start_time));
如果您將設置移動到循環之前,它會更快。
我也遇到過這個問題。 我必須使用 set(3,width) 和 set(4,height) 來獲取相機的原始尺寸,但是這種方法使我的代碼運行速度慢得多
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.