Ultra-fast Boost.Python interface for DBoW3
This repo was created in order to interface DBoW algorithm from python in another project EasyVision. It is being used for a simple topological SLAM implementation since OpenCV BowKMeansTrainer doesn't work with binary features.
If you wish you use it on your own it is as easy as:
import pyDBoW3 as bow
voc = bow.Vocabulary()
voc.load("/slamdoom/libs/orbslam2/Vocabulary/ORBvoc.txt")
db = bow.Database()
db.setVocabulary(voc)
del voc
# extract features using OpenCV
...
# add features to database
for features in features_list:
db.add(features)
# query features
feature_to_query = 1
results = db.query(features_list[feature_to_query])
del db
This repository was created based on pyORBSLAM2 and ndarray to cv::Mat conversion on numpy-opencv-converter.
Note
- Tested on these platforms:
- OpenCV 3.4.2.16
- Windows 10 msvc 2017 x64
- xenial with Python 2.7, libboost 1.54 (autobuild with travis)
- xenial with Python 3.5, libboost 1.54 (autobuild with travis)
Prerequisites: * OpenCV * Python with Numpy and opencv-contrib-python * Boost >1.54 * cmake * Microsoft Visual Studio
To build Boost.Python, go to Boost root and run:
bootstrap.bat --prefix=/dir/to/Boost.Build
Then build Boost.Python like this:
/dir/to/Boost.Build/b2 --with-python threading=multi variant=release link=static
To build DBoW3, simply run build.bat
file and then build solution folder in install/DBoW3/build
and then the solution
in build
folder.
Currently there is no python package generation, so you could simply copy pyDBoW3.pyd
and opencv_world*.dll
files
to your virtual environment.
Use build.sh
to build build/pyDBoW.so
, which you should then put on your PYTHONPATH
.
Check .travis.yml
for environment variables.
Use build.sh
to build build/pyDBoW.so
, which you should then put on your PYTHONPATH
.
Check .travis.yml
for environment variables.
Note
You will probably need to run sudo make install
for install/opencv/build
to install it on your system.
Build a conda environment, adding boost and cmake to it, something like:
conda create -n test_env python=3.5 opencv=3.3.1 cmake boost matplotlib numpy
## Unlink system boost installed by brew
brew unlink boost
Use build_under_conda.sh
to build build/pyDBoW.dylink
which is symlinked to build/pyDBoW.so
.
Add this to your conda environment by creating a .PTH
file under /Users/<user_name>/anaconda3/envs/test_env/lib/python3.5/site-packages/pydbow3.pth
containing /Users/<user_name>/pyDBoW3/build