我使用的是opencv 2.4.8。像这样声明球体:
int patchSize = 31;
ORB orb(1000,1.0f,1,patchSize,0,2,ORB::HARRIS_SCORE,patchSize);
补丁大小不意味着关键点周围应该有(补丁大小-1)/2的空间吗?
我在垂直和水平方向上提供具有15个像素边距的坐标处的关键点,但这样的位置无法生成描述符。
例如,对于图像240x320,即使有足够的像素(0,1,….14->15个像素),也无法描述点(15,15)。
OpenCV使用KeyPointsFilter::runByImageBorder
和选定的edgeThreshold
(即patchSize
)来消除靠近图像边界的关键点,以进行ORB计算(如果您想查看,文件为modules/features2d/src/orb.cpp
;computeKeyPoints
中的第669行)。
所以你的利润率实际上是31,而不是15。
希望能有所帮助!