I want to be able to calculate the LBP discriptor in python using OpenCV. According to this I need to compile openCV again.
I changed the elbp()
functio
So, it worked.
To make the function accessible: .
I made the following change to facerec.cpp, from:
static void elbp(InputArray src, OutputArray dst, int radius, int neighbors)
{
...
}
static Mat elbp(InputArray src, int radius, int neighbors) {
Mat dst;
elbp(src, dst, radius, neighbors);
return dst;
}
static Mat spatial_histogram(InputArray _src, int numPatterns,
int grid_x, int grid_y, bool /*normed*/)
{
...
}
to:
void elbp(InputArray src, OutputArray dst, int radius, int neighbors)
{
...
}
Mat elbp(InputArray src, int radius, int neighbors) {
Mat dst;
elbp(src, dst, radius, neighbors);
return dst;
}
Mat spatial_histogram(InputArray _src, int numPatterns,
int grid_x, int grid_y, bool /*normed*/)
{
...
}
I added the following into /modules/contrib/include/opencv2/include/contrib.hpp
under the cv
namespace:
CV_EXPORTS_W void elbp(InputArray src, OutputArray dst, int radius, int neighbors);
release
folder in the opencv root.From within that folder, I ran:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D BUILD_EXAMPLES=ON ..
make
/lib
and put it where python looks for the packages. For me, it was /usr/local/lib/python2.7/dist-packages/
run python
from cv2 import spatial_histogram
Voila!