Python — доступ Cython к модулю opencv features2d

Мне действительно нужна твоя помощь. Я пытаюсь получить доступ к дескрипторам opencv AKAZE и FREAK с Python, используя Cython (до сих пор я только пробовал это с FREAK). Но каждый раз, когда я пытаюсь его скомпилировать, я получаю сообщение об ошибке около 730 строк, потому что Cython говорит, что не знает вектор<…> типа и некоторые строки не в официальном синтаксисе C ++ в файле hpp. Но я не понимаю этого, потому что это официальный заголовок opencv, который должен работать.

Это часть моего сообщения об ошибке:

    /usr/include/opencv2/features2d/features2d.hpp:1515:35: error: ISO C++ forbids declaration of ‘parameter’ with no type [-fpermissive]
/usr/include/opencv2/features2d/features2d.hpp:1515:41: error: expected ‘,’ or ‘...’ before ‘<’ token
CV_EXPORTS float getRecall( const vector<Point2f>& recallPrecisionCurve, float l_precision );
^
/usr/include/opencv2/features2d/features2d.hpp:1516:39: error: ‘vector’ does not name a type
CV_EXPORTS int getNearestPoint( const vector<Point2f>& recallPrecisionCurve, float l_precision );

Это мой .pxd-файл:

cdef extern from "opencv2/core/core.hpp":
cdef int  CV_WINDOW_AUTOSIZE
cdef int CV_8UC3

# -------------------------------------Bool Header-------------------------

cdef extern from "stdbool.h":
ctypedef struct bool:
pass
# ------------------------------------Vector Header------------------------

cdef extern from "vector" namespace "std":
cdef cppclass vector [T]:
pass# -----------------------------------Features2d Header----------------------

cdef extern from "/usr/include/opencv2/features2d/features2d.hpp" namespace "cv":
cdef cppclass FREAK:
FREAK* FREAK( bool orientationNormalized=true, bool scaleNormalized=true, float patternScale=22.0, int nOctaves=4, const vector& selectedPairs=vector<int>()) except *
FREAK* FREAK( const FREAK& rhs )
int descriptorSize()
int descriptorType()

Это мой файл setup.py:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize

libdir = ["/usr/include/", "/usr/local/lib"]
incdir = ["/usr/local/lib/", "/usr/include", "/usr/include/opencv2/core"]

ext_modules = [Extension("description",
["description.pyx"],
language="c++",
library_dirs=libdir,
include_dirs=incdir,
libraries=["opencv_features2d", "opencv_core"])]

setup(name="description", ext_modules=cythonize(ext_modules))

Сообщение об ошибке выдает ошибки почти для каждой функции (и я просто хочу получить доступ к конструктору FREAK). Надеюсь, вы можете помочь мне.

Большое спасибо,
Лео

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]