Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中生成的空/无SIFT描述符和关键点_Python_Opencv_Sift_Vlfeat - Fatal编程技术网

python中生成的空/无SIFT描述符和关键点

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

我试图从一组图像补丁创建一个代码本。我已将图像(加州理工学院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_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
属性调整到补丁的大小)。 然后,仅对这组位置调用描述符提取器