这篇教程Python语言实现SIFT算法写得很实用,希望能帮到您。 本文侧重于如何使用Python语言实现SIFT算法 所有程序已打包:基于OpenCV-Python的SIFT算法的实现
一、什么是SIFT算法 SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。
二、准备工作
2.1 实验设备 本文在Windows10系统上,使用pycharm软件完成所有实验。
2.2 OpenCV安装 我们可以使用OpenCV库中的cv2.xfeatures2d.SIFT_create() 函数实现SIFT,但由于专利保护,很多版本的OpenCV库已无法提供该函数,目前仅3.4.2.16 版本的OpenCV库可使用此函数。 安装教程: (1)查看当前版本opencv:进入cmd(组合键win+R,输入cmd),输入conda list ,查看当前pycharm所有库并找到opencv-python,若找不到库,说明没有安装。 (2)卸载原版本(在cmd中输入:pip uninstall opencv ) (3)安装新版本(在cmd中输入:pip install opencv-python==3.4.2.16 -i "https://pypi.doubanio.com/simple/" (4)安装附属库(在cmd中输入:pip install opencv-contrib-python==3.4.2.16 -i "https://pypi.doubanio.com/simple/" )
三、实验工作
3.1 图像选择 这里选择经典的lena图像作为实验对象,为了选择一个待匹配图像,本文使用如下代码对lena图像进行逆时针45°旋转。 from PIL import Imageimg = Image.open('lena.png')img2 = img.rotate(45) # 逆时针旋转45°img2.save("lena_rot45.png")img2.show() 参考图像与待匹配图像(即旋转图像)如下图所示: 
3.2 程序实现 |