在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相同的问题,即使不是相同的问题-但您 可以
使用ctypes或swig,但是由于OpenCV中已经存在python接口,所以最好的选择是看看现有的如何完成。
pyopencv可能也值得一看,它提供了一个基于Boost的接口。
更新:
要了解当前的系统并在东西看看CMakeLists.txt
的opencv/modules/python
,你会发现,一些产生的头被创建opencv/modules/python/src2/gen2.py
-你将需要花一些时间看这两个文件。