簡體   English   中英

OpenCV set() 和 read() function 太慢(Python)

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

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