Home

Awesome

Global Matting Algorithm with Cython Interface

This is an global matting algorithm based on this repository. Its core algorithms are written in c++ to guarantee the speed, and it provides a python interface to integrate it with other data processing methods. Paper of the algorithm:

He, Kaiming, et al. "A global sampling method for alpha matting." In CVPR’11, pages 2049–2056, 2011.

Together, with an implementation of Cython wrapper to allow the convertion between a numpy.array and a cv::Mat and the other way arround (cv::Mat to numpy.array). The Cython wrapper is based on this repository.

Build

First, specify your opencv library path in setup.py:line 10-13. For me, the opencv library is in /usr/lib/x86_64-linux-gnu and the prefix is /usr. Note that the prefix will be useful again in setup.py:line 30 for the opencv include path.

To build, run python3 setup.py build_ext --inplace and ignore any warnings.

When building is complete, test the algorithm via python3 test.py.

You should see a GT04-alpha.png with good matting result.

Environment Settings (Linux)

To build this code, OpenCV (C++ version) is needed. If user has been installed OpenCV before, it is OK to follow instructions in bulid or simply use pip install opencv-mat. Otherwise, user should install OpenCV. We show how to install OpenCV in Conda (Recommand) or in System below.

Conda (Recommand)

If users only use OpenCV (C++ Version) for this package, we highly recommand using conda environment. To install Conda, users may search in this website or other versions of conda. Here is an instruction.

After installing Conda, users may easily following commands below to install this package.

conda create -n environment_name -python=3.x
conda activate environment_name
conda install -c salilab opencv-nopython        # opencv2
conda install -c serge-sans-paille gcc_49       # you need to use conda's gcc instead of system's
ln -s ~/miniconda3/envs/environment_name/bin/g++-4.9 ~/miniconda3/envs/environment_name/bin/g++   #link to bin
ln -s ~/miniconda3/envs/environment_name/bin/gcc-4.9 ~/miniconda3/envs/environment_name/bin/gcc   #link to bin
pip install cython numpy
pip install opencv-mat

System

If users may want to use OpenCV (C++ Version) for any other purpose, we also give an instruction here to help install OpenCV in Ubuntu 16.04. (Other Linux systems may be similar)

sudo apt-get install cmake build-essential                                     # install compile tools
sudo apt-get install libgtk2.0-dev pkg-config \
    libavcodec-dev libavformat-dev libswscale-dev                              # install dependency packages
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev \
    libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev                      # install optional dependency packages

wget https://github.com/opencv/opencv/archive/2.4.13.6.zip                     # download opencv source code, other versions are in https://opencv.org/releases/
unzip opencv-2.4.13.zip
cd opencv-2.4.13
mkdir release
cd release

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..     
make -j4                                                                       # -j4 means jobs=4, users can set jobs according to cpu threads
sudo make install                                                              # install opencv in your computer, whether `sudo` is needed depends on CMAKE_INSTALL_PREFIX

Here, CMAKE_INSTALL_PREFIX can be set to other paths. However, we recommand /usr/local or /usr since our code and may other projects use this path as default.

After installing OpenCV, users need to setup PATH.

First, run sudo vim /etc/ld.so.conf.d/opencv.conf, add CMAKE_INSTALL_PREFIX/lib (e.g. /usr/lib) in this file and save, then run sudo ldconfig to activate.

Second, run sudo vim /etc/bash.bashrc, add this in the end of the file and save.

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:CMAKE_INSTALL_PREFIX/lib/pkgconfig
export PKG_CONFIG_PATH

Finally, run

su      # input password
source /etc/bash.bashrc
exit
sudo updatedb

Users can check using these commands.

ldconfig -p | grep libopencv
pkg-config --cflags opencv

After that, users can install our package using

pip install opencv-mat

Tested Environments

PassLinuxpythonopencv
Ubuntu16.043.52.4
Ubuntu16.043.62.4
×Ubuntu16.04*3.x