python中生成的空/无SIFT描述符和关键点
我试图从一组图像补丁创建一个代码本。我已将图像(加州理工学院101)划分为20 X 20个图像块。我想为每个补丁创建一个SIFT描述符。但对于某些图像修补程序,它不会返回任何描述符/关键点。我尝试过使用OpenCV和vlfeat。 使用任何库的行为都是相同的 下面是我使用OpenCV的代码-python中生成的空/无SIFT描述符和关键点,python,opencv,sift,vlfeat,Python,Opencv,Sift,Vlfeat,我试图从一组图像补丁创建一个代码本。我已将图像(加州理工学院101)划分为20 X 20个图像块。我想为每个补丁创建一个SIFT描述符。但对于某些图像修补程序,它不会返回任何描述符/关键点。我尝试过使用OpenCV和vlfeat。 使用任何库的行为都是相同的 下面是我使用OpenCV的代码- sift = cv2.SIFT() img = cv2.imread('patch_temp.jpg',0) imgptch = cv2.imread('image_patch.jpg',cv2.CV_LO
sift = cv2.SIFT()
img = cv2.imread('patch_temp.jpg',0)
imgptch = cv2.imread('image_patch.jpg',cv2.CV_LOAD_IMAGE_GRAYSCALE)
kp, des = sift.detectAndCompute(imgptch,None)
print des
des是“无”。如果我使用vlfeat,情况也是如此。
注意:如果我使用不同的图像,上面的工作。对于某些图像,它返回None(10个图像中的6个)
我已经使用OpenCV索引创建了图像修补程序-
patch = img[0:20,0:20]
cv2.imwrite('image_patch.jpg',img)
函数
sift.detectAndCompute将首先尝试检测sift关键点,然后在找到的位置计算描述符
这不是您想要的:您想要为每个补丁都有一个描述符。
您可以先手工制作关键点位置(通过将其pt
属性调整到补丁的中心,并将其size
属性调整到补丁的大小)。
然后,仅对这组位置调用描述符提取器