在OpenCV3中SIFT,SURF等算法去哪了?

607 阅读1分钟

利用pip install 进行安装,安装成功,import cv2没出错,但是在

进行 detector=cv2.SIFT()时显示错误:AttributeError: module 'cv2' has no attribute 'SIFT',通过查找相关资料得知,原来在OpenCV2中的“non-free” modules不再是默认安装的,它们均被集中在中,在配置OpenCV时需要同OpenCV源码一块编译,本人要在Python下使用OpenCV,在编译时需要Python支持,网上有相关教程,细节操作可行性不强。还好,在Python下有已经编译好的库,但是目前仅支持Python3.5和3.6,。下载后如下安装:


<span style="font-size:18px;">pip install opencv_python-3.3.0+contrib-cp36-cp36m-win_amd64.whl</span>

安装成功后,便可以在Python下使用SIFT和SURF等特征了,示例程序如下:



  • import
    cv2







  • img = cv2.imread(
    'cat.jpg'
    )



  • gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)







  • surf = cv2.xfeatures2d.SURF_create()



  • kp = surf.detect(gray,
    None
    )







  • img = cv2.drawKeypoints(gray, kp, img)







  • cv2.imshow(
    "img"
    , img)







  • k = cv2.waitKey(
    0
    )



  • if
    k &
    0xff
    ==
    27
    :



  • cv2.destroyAllWindows()


运行结果如下:




更多免费技术资料可关注:annalin1203