所以我不久前写了一些代码,在我的黑白图像版本detectAndCompute()
上运行SIFT gray
函数。我的代码在使用的图像上运行良好,但是最近开始失败。每当我运行代码时,我都会收到此错误:
错误:(-5)图片为空或功能cv :: xfeatures2d :: SIFT_Impl :: detectAndCompute中的深度不正确(!= CV_8U)
我知道每当我有错误的图像深度或空白图像时都会出现问题,但是我的代码似乎都不存在这种情况。我打印出图像名称,因此我知道已到达文件。我想知道是否有人知道我的代码可能失败的可能原因。
这是我将图像转换为灰度后尝试在图像上运行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)