在Python中从OpenCV公开LBP描述符


问题内容

我希望能够使用OpenCV在python中计算LBP描述符。根据这个,我需要重新编译的OpenCV。

我更改了中的elbp()功能opencv-2.4.6.1/modules/contrib/src/facerec.cpp,因此它们不再处于静态状态。现在,我必须在HFile中声明它们(假设我创建了elbp.hpp,还是应该将其添加到现有文件中?):

// This is a header file created to expose the elbp (evaluate LBP) functions

#include "opencv2/core/core.hpp"

namespace cv {

Mat elbp(InputArray src, int radius, int neighbors);
Mat elbp(InputArray src, OutputArray dst, int radius, int neighbors);
Mat spatial_histogram(InputArray _src, int numPatterns, int grid_x, int grid_y, bool /*normed*/);
};

为了编译OpenCV,我按照此处的说明进行操作,并创建了cv2.so共享库。

我的问题是,如何创建python“包装器”(如果我使用正确的单词)以能够从python调用elbp()函数? 我觉得我错过了关键的一步。

例如,cv2.HogDescriptor()函数存在于python中,我想同样地公开LBP描述符。


问题答案:

这实际上是与如何在python中调用dll相同的问题,即使不是相同的问题-但您 可以
使用ctypesswig,但是由于OpenCV中已经存在python接口,所以最好的选择是看看现有的如何完成。

pyopencv可能也值得一看,它提供了一个基于Boost的接口。

更新:

要了解当前的系统并在东西看看CMakeLists.txtopencv/modules/python,你会发现,一些产生的头被创建opencv/modules/python/src2/gen2.py-你将需要花一些时间看这两个文件。