开发者

OpenCV Python and SIFT features

开发者 https://www.devze.com 2023-03-21 00:53 出处:网络
I know there is a lot of questions about Python and OpenCV but I didn\'t find help on this special topic.

I know there is a lot of questions about Python and OpenCV but I didn't find help on this special topic.

I want to extract SIFT keypoints from an image in python OpenCV.

I have recently installed OpenCV 2.3 and can access to SURF and MSER but not SIFT. I can't see anything related to SIFT in python modules (cv and cv2) (well I'm lying a bit: there are 2 constants: cv2.SIFT_COMMON_PARAMS_AVERAGE_ANGLE and cv2.SIFT_COMMON_PARAMS_FIRST_ANGLE).

This puzzles me开发者_StackOverflow中文版 since a while. Is that related to the fact that some parts of OpenCV are in C and other in C++? Any idea?

P.S.: I have also tried pyopencv (another python binding for OpenCV <= 2.1) without success.


I can't say whether this is the reason SIFT was not available via Python for OpenCV 2.3 (as the original question asks). However, the patent which was preventing SIFT from being included in OpenCV expired on 2020-03-06.

The distributed build of OpenCV now includes SIFT since version 4.4.0, accessible via cv2.SIFT_create() in Python.

See the documentation for further information on its use.


You can compute SIFT features using OpenCV python bindings as follows:

  import cv2

  sift = cv2.SIFT()
  keypoints, descriptors = sift.detectAndCompute(imgray,None)


SIFT has been patented and is not free for commercial use.

But if you want to use it for educational purposes, it's simple:

pip install opencv-python opencv-contrib-python

and then you can do

import cv2

# Initiate SIFT detector
sift = cv2.xfeatures2d.SIFT_create()

# find the keypoints and descriptors with SIFT
kp1, des1 = sift.detectAndCompute(img, None)


On ubuntu you can fix with installing this version of opencv-contrib

pip3 install opencv-contrib-python==3.4.0.12
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号