OpenCV ‘3.0.0-dev’ с Python: утечка памяти во время цикла cv2.imread() и функции cv2.VideoCapture.read()

#python #opencv #memory-leaks

#python #opencv #утечки памяти

Вопрос:

Я недавно обновил OpenCV с 2.4.9 до 3.0.0-dev, чтобы использовать некоторые новые функции в интерфейсе python, который используется в OpenCV с учебным пособием по Python на официальном сайте.

Я использую это для предварительной сборки для установки http://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.0-ocl-tech-preview/tp1 /

Но у меня была проблема с захватом камеры, а также с чтением изображения в цикле while. например

 import cv2

cap = cv2.VideoCapture(0)

num = 0
while True:
    ret,frame = cap.read()
    cv2.imshow('video',frame)
    k = cv2.waitKey(1)
    if k == ord('q'):
        break
    elif k == ord('c'):
        cv2.imwrite('photo' str(num) '.jpg',frame)
        num  = 1

cap.release()
cv2.destroyAllWindows()
  

а также, если я изменю cap.read() на cv2.imread()

 import cv2

num = 0
while True:
    frame = cv2.imread('D:/Boat/work/hga_counter/test_photo/photo0.jpg')
    cv2.imshow('video',frame)
    k = cv2.waitKey(0)
    if k == ord('q'):
        break
    elif k == ord('c'):
        cv2.imwrite('photo' str(num) '.jpg',frame)
        num  = 1
cv2.destroyAllWindows()
  

Память, используемая python.exe увеличиваясь со временем, пока он не заполнится полностью.

Устарел ли мой установщик OpenCV, и я должен скомпилировать OpenCV из самого обновленного источника? или есть какое-либо другое решение?

Комментарии:

1. «Устарел ли мой установщик OpenCV» — нет. 3.0 скорее «из будущего», но, тем не менее, он совершенен. у вас такие же проблемы с 2.4.9?

2. Нет, мой 2.4.9 может работать отлично. Я обновляю это, потому что некоторые функции не имеют интерфейса в Python. Мой «Устаревший» означает, была ли эта ошибка исправлена в текущем главном коммите в Github, потому что установщик был опубликован в феврале 2014 года.

3. ах, приятно знать. когда вы его загрузили? возможно, эта ошибка (исправлена 3.2.2014)

4. Да!, вероятно, это проблема. Я только вчера загрузил свой установщик, но Sourceforge сказал, что он не обновлялся с февраля. Теперь я пытаюсь собрать OpenCV 3 из главной ветки, но это все равно не удалось, ха-ха. Я довольно плох в этом.

5. да, тот же src. неудивительно. либо обновите код с github, либо примените тот же патч . установщик, который не обновлен, стоило бы сделать проблему imho.