Python Gpu Sift silx.opencl (ошибка памяти графического процессора MEM_OBJECT_ALLOCATION_FAILURE) - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть 2 больших спутниковых снимка. И я разделил это изображения. Я хочу сопоставить два изображения, используя алгоритм смещения графического процессора. Но я получаю ошибку "MEM_OBJECT_ALLOCATION_FAILURE". Я удаляю (sift_ocl, kp, mp, match), но выделенная память не очищается до завершения всего сценария. Остаточная память приходит на каждом этапе цикла. Ниже приведен небольшой демонстрационный код. Моя работа похожа на эту логику. введите описание изображения здесь

import os

import cv2

import numpy

из silx.opencl import sift

devicetype = "GPU" os.environ ["PYOPENCL_COMPILER_OUTPUT"] = "0"

для i в диапазоне (20):

image_rgb = numpy.asarray(cv2.imread('lena_large.jpg'))
image = cv2.imread("lena_large.jpg", 0)

image_rgb2 = cv2.imread('lena2_large.jpg')
image2 = cv2.imread("lena2_large.jpg", 0)

sift_ocl = sift.SiftPlan(template=image, devicetype="GPU")
kp = sift_ocl.keypoints(image)
del sift_ocl,image, image_rgb
# print kp.size


sift_ocl2 = sift.SiftPlan(template=image2, devicetype="GPU")
kp2 = sift_ocl2.keypoints(image2)
del sift_ocl2,image2, image_rgb2
# print kp2.size

mp = sift.MatchPlan(devicetype="GPU")
match = mp(kp, kp2)
del mp, kp,kp2, match
...