我只是想开始学习OpenCV。我的理解是ExtractSURF应该返回0到360之间的角度。因为某些原因,关键点总是返回90的方向。有什么想法为什么?在
此代码:
import cv
image = cv.LoadImageM('lena.bmp', cv.CV_LOAD_IMAGE_GRAYSCALE)
(keypoints, descriptors) = cv.ExtractSURF(image, None, cv.CreateMemStorage(), (0, 6000, 1, 3))
for keypoint in keypoints:
((x, y), laplacian, size, dir, hessian) = keypoint
print "x=%d y=%d laplacian=%d size=%f dir=%f hessian=%f" % (x, y, laplacian, size, dir, hessian)
退货
^{pr2}$
缺少
_upright
参数,该参数告诉OpenCV是否计算角度。所以我假设OpenCV决定只返回90度,如果不指定它。我不记得是否有方法在旧的cv
接口中指定它。但是,在较新的cv2
界面中,它非常简单:指定所需的曲面参数:
^{pr2}$注意,将
upright
作为1
传递将始终返回90
的角度。在构造SURF对象并读取图像:
一个关于(x,y)、大小、方向的返回结果的示例:(我使用的是不同的图像)
就这样。这就是为什么我总是建议人们切换到更新的
cv2
接口的原因之一。自从我做了这个转换,我就再也不用处理丢失参数之类的事情了。在我希望这对你有帮助!在
相关问题 更多 >
编程相关推荐