У меня есть 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