2011-07-17 40 views
15

Tôi biết có rất nhiều câu hỏi về PythonOpenCV nhưng tôi không tìm thấy trợ giúp về chủ đề đặc biệt này.Các tính năng Python và SIFT của OpenCV

Tôi muốn trích xuất Điểm đánh dấu SIFT từ hình ảnh trong python OpenCV.

Gần đây tôi đã cài đặt OpenCV 2.3 và có thể truy cập SURF và MSER nhưng không truy cập SIFT. Tôi không thể thấy bất cứ điều gì liên quan đến SIFT trong mô-đun python (cv và cv2) (tôi cũng nói dối một chút: có 2 hằng số: cv2.SIFT_COMMON_PARAMS_AVERAGE_ANGLEcv2.SIFT_COMMON_PARAMS_FIRST_ANGLE).

Câu đố này kể cho tôi một lúc. Điều đó có liên quan đến thực tế là một số phần của OpenCV nằm trong C và các phần khác trong C++ không? Bất kỳ ý tưởng nào?

P .: tôi cũng đã thử pyopencv (một python ràng buộc cho OpenCV < = 2.1) mà không thành công.

+0

Bạn có xây dựng OpenCV từ các nguồn? – Unapiedra

+0

Có Tôi đã xây dựng OpenCV 2.3 từ nguồn sử dụng các tùy chọn CMAKE_BUILD_TYPE = RELEASE, CMAKE_INSTALL_PREFIX, BUILD_PYTHON_SUPPORT = ON, WITH_QT = ON (trình biên dịch hoạt động mà không có vấn đề gì). –

+0

Những kẻ ở willowgarage đặt tài liệu cho OpenCV 2.3 trực tuyến [link] (http://opencv.itseez.com/). Rõ ràng features2d trong python không bao gồm nhiều thứ. –

Trả lời

1

Bạn có chắc OpenCV được phép hỗ trợ SIFT không? SIFT là một loại tính năng độc quyền, được cấp bằng sáng chế tại Hoa Kỳ bởi Đại học British Columbia và David Lowe, người phát minh ra thuật toán. Trong nghiên cứu của riêng tôi, tôi đã phải viết lại thuật toán này nhiều lần. Trên thực tế, một số nhà nghiên cứu thị giác cố gắng tránh SIFT và sử dụng các mô hình bất biến quy mô khác vì SIFT là độc quyền.

+5

SIFT nằm trong OpenCV (bạn có thể kiểm tra tài liệu C++). Tại sao nó không thể truy cập từ python thực sự là bí ẩn. Chắc chắn có những điểm phát hiện điểm quan tâm nhưng SIFT là loại đường cơ sở ... –

+1

Có lẽ mã Python của liên kết này sẽ đủ cho những gì bạn cần làm: . Có vẻ như điều này sẽ rất dễ trộn với mã OpenCV. – ely

+1

Cảm ơn. Tôi đã sử dụng các thủ đoạn như thế ... Và tôi nghĩ tôi sẽ gắn bó với điều đó. Nhưng tôi vẫn không hiểu tại sao SIFT không thể truy cập được từ Python. –

0

Bạn có thể tính toán SIFT tính năng sử dụng bindings OpenCV python như sau:

import cv2 

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

SIFT() không hoạt động với thư viện cv2. tôi đã thử Python (x, y), nhưng không thành công. Bạn có thể cho biết, từ đâu bạn có thư viện không? u đã biên dịch từ nguồn hay phương pháp nào khác? –

Các vấn đề liên quan