, поэтому я недавно написал некоторый код, который запускает функцию SIFT detectAndCompute()
для черно-белой версии моего изображения с именем gray
.Мой код работал нормально с изображениями, с которыми я работал, но недавно начал давать сбой.Я получаю эту ошибку всякий раз, когда запускаю свой код:
ошибка: (-5) изображение пусто или имеет неправильную глубину (! = CV_8U) в функции cv :: xfeatures2d :: SIFT_Impl :: detectAndCompute
Я знаю, что проблема возникает, когда у меня неправильная глубина изображения или пустое изображение, но ни один из них, похоже, не относится к моему коду.Я распечатываю имя изображения, чтобы знать, что файл находится в процессе.Мне было интересно, знает ли кто-нибудь возможные причины, по которым мой код может давать сбой.
Это код, в котором я пытаюсь запустить detectAndCompute
на изображении после его преобразования в оттенки серого.
#Class constructor - basically an initializer
def __init__(self, image, x, y):
self.x = x
self.y = y
self.image = image
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
sift = cv2.xfeatures2d.SIFT_create()
(self.kps, self.features) = sift.detectAndCompute(gray,None)
self.kps = np.float32([kp.pt for kp in self.kps])
и это код, где я читаю файлы изображений из папки.
#import spam grid images from folder
images = [cv2.imread(file) for file in glob.glob("SpAMImages/*")]
#obtain SpAM reference image names
file_names= [os.path.basename(file).split(".")[0] for file in
glob.glob("SpAMImages/*")]
for image, file_name in zip(images, file_names):
print(file_name)