Python 亚像素角点细化不会产生真实的结果

Python 亚像素角点细化不会产生真实的结果,python,opencv,scikit-image,corner-detection,Python,Opencv,Scikit Image,Corner Detection,我想在亚像素级上检测二进制矩形的角点。我自己将角点标记为初始值。现在,获取亚像素角点应该是一项标准任务,但是使用scikit图像算法“角点\子像素点”,我无法获得稳定的真实结果 这是我想从中获取亚像素角点的图像(显然是上、左、右和下角) 我试过几种尺寸的窗户,但似乎都不起作用。似乎计算出的子像素角点中有一个偏移量,该偏移量随着窗口大小的增加而增大。有人知道为什么会这样吗?对我来说,这看起来像是一个标准任务,它也非常接近scikit提供的示例。(见下面的其他信息) TBH我认为用于此功能的sci

我想在亚像素级上检测二进制矩形的角点。我自己将角点标记为初始值。现在,获取亚像素角点应该是一项标准任务,但是使用scikit图像算法“角点\子像素点”,我无法获得稳定的真实结果

这是我想从中获取亚像素角点的图像(显然是上、左、右和下角)

我试过几种尺寸的窗户,但似乎都不起作用。似乎计算出的子像素角点中有一个偏移量,该偏移量随着窗口大小的增加而增大。有人知道为什么会这样吗?对我来说,这看起来像是一个标准任务,它也非常接近scikit提供的示例。(见下面的其他信息) TBH我认为用于此功能的scikit映像文档非常薄

将numpy导入为np
进口cv2
从matplotlib导入pyplot作为plt
从skimage.feature导入角点_子项
pathToTheImage=r'…\foo'
img=cv2.imread(路径到图像)
灰度=img[:,:,1]
coords=np.数组([[119,653.],
[188., 584.],
[186., 724.],
[255., 656.]])
坐标子像素=角点子像素(灰度、坐标、窗口大小=3)
图=plt.图()
ax=图添加_子批次(111)
ax.imshow(灰度,cmap='gray')
最大散射(坐标[:,1],坐标[:,0],
颜色=‘蓝色’,标签=‘原始角点’)
最大散布(坐标子项[:,1],坐标子项[:,0],
颜色=‘红色’,标签=‘精致角点’)
ax.图例()

您可以自己尝试,修复路径后,代码应该可以正常工作


附加信息如下:

您是否仍然看到问题?我已经启动了一个新的venv,我没有看到如此巨大的差异:。我没有获得好的结果,完全停止使用这种方法。不过,您提供的解决方案看起来很有趣,我将在接下来的几天中查看它。您使用的scikit版本是什么?scikit image==0.17.2您是否仍然看到问题?我已经启动了一个新的venv,我没有看到如此巨大的差异:。我没有获得好的结果,完全停止使用这种方法。不过,您提供的解决方案看起来很有趣,我将在接下来的几天中查看它。您使用的scikit版本是什么?scikit image==0.17.2