cv2.VideoCapture leaking memory...

Aperta
#1,151 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
python

Direzione di ricerca

Iniziate eseguendo la riproduzione Python fornita con file video rappresentativi e registrate i dettagli di Python, OpenCV e della piattaforma, che l’issue non specifica. Tracciate la memoria durante la creazione ripetuta di VideoCapture, le operazioni di ricerca, lettura, rilascio e garbage collection; il lavoro è completato quando viene isolata una perdita riproducibile e viene identificato il componente interessato o una correzione minima.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

incomplete
import psutil
import os
import random
import cv2
import gc

def logMem():
    uss = psutil.Process(os.getpid()).memory_full_info().uss / 1024 / 1024
    print(f"Memory usage: {uss} MB")

def Test(path):
    print("-"*100)
    print(path)
    cap = cv2.VideoCapture(path)
    total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    print("init")
    logMem()
    for i in range(20):
        k = random.randint(0, total_frames)
        _ = cap.set(cv2.CAP_PROP_POS_FRAMES, k)
        ret, frame = cap.read()
        del ret, frame
    print("finish")
    logMem()
    cap.release()
    del cap
    gc.collect()
    gc.collect()
    gc.collect()
    print("del")
    logMem()
    print("-"*100)

path = 'PATH_TO_VIDEOS_FOLDER'
videos = os.listdir(path)

for i in range(10):
    Test(path + random.choice(videos))

Memory keep growing after every loop iter.

Lingua principale
Python
Stelle
5.4k
Fork
1k
Merge medio
22h 17m
PR unite (30g)
3

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di opencv/opencv-python

Tutte le issue di opencv/opencv-python

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.