Ответ 1
Для работы я однажды завернул Tesseract (программное обеспечение OCR) с помощью Cython, который является языком языка Python. Вы пишете в основном программу python, которая скомпилируется в полнофункциональный двоичный модуль python. В вашем .pyx файле вы можете импортировать файлы/библиотеки C/С++, создавать объекты, функции вызова и т.д.
Вы можете определить небольшой проект Cython и сделать что-то вроде:
#make sure Cython knows about a CvMat
cdef extern from "opencv2/modules/core/include/opencv2/types_c.h":
ctypedef struct CvMat
#import your fast_support_transform
cdef extern from "my_fast_support_transform_file.h":
int fast_support_transform(CvMat * I, CvMat * N, ...)
#this bit is the glue code between Python and C
def my_fast_support_transform(CvMat * I, CvMat * N, ...)
return fast_support_transform(CvMat * I, CvMat * N, ...)
Вам также понадобится файл distutils/Cython, который выглядит примерно так:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
setup(
cmdclass = {'build_ext': build_ext},
ext_modules = [Extension("wrapped_support_transform", ["wrapped_support_transform.pyx"])]
)
Сайт Cython имеет отличный учебник для создания вашего первого проекта Cython: http://docs.cython.org/src/userguide/tutorial.html