如何在 python 中使用 SURF?

How to use SURF in python?

我将在 pycharm 从事图像处理项目 "currency recognition system "。我只想将输入图像与数据库中的现有图像匹配并显示结果(数据库图像名称)。我怎样才能用 SURF 功能做到这一点。我在互联网上查过,但没有得到任何相关代码。你能帮我做这个吗?

谢谢 Chathu

您正在寻找 Speed Up Robust Features (SURF) 的实现。对于您的用例,您最好使用像 OpenCV 这样的库。

阅读 OpenCV docs 如何安装。
Here's 安装完成后如何在 OpenCV 中使用 SURF。

SIFT 和 SURF 是 OpenCV 称为“非自由”模块的算法示例。这些算法由各自的创建者申请专利,虽然它们可以在学术和研究环境中免费使用,但如果您将它们用于商业用途(即营利性),从技术上讲,您应该从创建者那里获得 license/permission申请。

但是 Good New 是...

同样重要的是要注意,通过使用 opencv_contrib,您不会干扰 OpenCV 3 中包含的任何其他关键点检测器和局部不变描述符。您仍然可以访问 KAZE、AKAZE 、BRISK 等没有问题:

>>> kaze = cv2.KAZE_create()
>>> (kps, descs) = kaze.detectAndCompute(gray, None)
>>> print("# kps: {}, descriptors: {}".format(len(kps), descs.shape))
# kps: 359, descriptors: (359, 64)
>>> akaze = cv2.AKAZE_create()
>>> (kps, descs) = akaze.detectAndCompute(gray, None)
>>> print("# kps: {}, descriptors: {}".format(len(kps), descs.shape))
# kps: 192, descriptors: (192, 61)
>>> brisk = cv2.BRISK_create()
>>> (kps, descs) = brisk.detectAndCompute(gray, None)
>>> print("# kps: {}, descriptors: {}".format(len(kps), descs.shape))
# kps: 361, descriptors: (361, 64)

从中获取更多信息 Link:https://www.pyimagesearch.com/2015/07/16/where-did-sift-and-surf-go-in-opencv-3/