0

I just built opencv from source but don't seem to have the python bindings for it.

(ocv) me@vm:~$ python
Python 3.5.2 (default, Sep 14 2017, 22:51:06) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'cv2'
>>> exit()
(ocv) me@vm:~$ sudo ldconfig -p | grep libopencv
  libopencv_videostab.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_videostab.so.3.0
  libopencv_videostab.so (libc6,x86-64) => /usr/local/lib/libopencv_videostab.so
  libopencv_videoio.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_videoio.so.3.0
  libopencv_videoio.so (libc6,x86-64) => /usr/local/lib/libopencv_videoio.so
  libopencv_video.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_video.so.3.0
  libopencv_video.so (libc6,x86-64) => /usr/local/lib/libopencv_video.so
  libopencv_superres.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_superres.so.3.0
  libopencv_superres.so (libc6,x86-64) => /usr/local/lib/libopencv_superres.so
  libopencv_stitching.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_stitching.so.3.0
  libopencv_stitching.so (libc6,x86-64) => /usr/local/lib/libopencv_stitching.so
  libopencv_shape.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_shape.so.3.0
  libopencv_shape.so (libc6,x86-64) => /usr/local/lib/libopencv_shape.so
  libopencv_photo.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_photo.so.3.0
  libopencv_photo.so (libc6,x86-64) => /usr/local/lib/libopencv_photo.so
  libopencv_objdetect.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_objdetect.so.3.0
  libopencv_objdetect.so (libc6,x86-64) => /usr/local/lib/libopencv_objdetect.so
  libopencv_ml.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_ml.so.3.0
  libopencv_ml.so (libc6,x86-64) => /usr/local/lib/libopencv_ml.so
  libopencv_imgproc.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_imgproc.so.3.0
  libopencv_imgproc.so (libc6,x86-64) => /usr/local/lib/libopencv_imgproc.so
  libopencv_imgcodecs.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_imgcodecs.so.3.0
  libopencv_imgcodecs.so (libc6,x86-64) => /usr/local/lib/libopencv_imgcodecs.so
  libopencv_highgui.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_highgui.so.3.0
  libopencv_highgui.so (libc6,x86-64) => /usr/local/lib/libopencv_highgui.so
  libopencv_flann.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_flann.so.3.0
  libopencv_flann.so (libc6,x86-64) => /usr/local/lib/libopencv_flann.so
  libopencv_features2d.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_features2d.so.3.0
  libopencv_features2d.so (libc6,x86-64) => /usr/local/lib/libopencv_features2d.so
  libopencv_core.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_core.so.3.0
  libopencv_core.so (libc6,x86-64) => /usr/local/lib/libopencv_core.so
  libopencv_calib3d.so.3.0 (libc6,x86-64) => /usr/local/lib/libopencv_calib3d.so.3.0
  libopencv_calib3d.so (libc6,x86-64) => /usr/local/lib/libopencv_calib3d.so
(ocv) me@vm:~/opencv-in-python$ uname -a
Linux vm 4.10.0-38-generic #42~16.04.1-Ubuntu SMP Tue Oct 10 16:32:20 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

And then here's how I built from source, largely following the directions from the website:

pushd /tmp
wget https://github.com/opencv/opencv/archive/3.1.0.zip
unzip 3.1.0.zip
mkdir opencv-3.1.0
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
make -j $(nproc)
popd
tarabyte
  • 17,837
  • 15
  • 76
  • 117
  • I faced something similar here is what worked for me https://stackoverflow.com/questions/45667453/opencv-not-working-with-python3/45676389#45676389 – tsukyonomi06 Nov 15 '17 at 19:26
  • copy the `cv2` lib file from the system's python site_packages directory to your virtualenv (ocv) site_packages dir. – zindarod Nov 15 '17 at 19:49
  • neither of these work. there is no `site-packages` directory in my `/usr/lib/{python2.7,python3,python3.5}` directories – tarabyte Nov 15 '17 at 20:51

1 Answers1

3

I forgot to include opencv_contrib project and make sure that is on the same release as the opencv project. I also forgot to symlink the shared object file.

cd ~/.virtualenvs/cv/lib/python3.5/site-packages
ln -s /usr/local/lib/python3.5/site-packages/cv2.cpython-35m-x86_64-linux-gnu.so cv2.so

After that, my import works:

(ocv) me@vm:~$ python -c "import cv2"
(ocv) me@vm:~$
tarabyte
  • 17,837
  • 15
  • 76
  • 117
  • 1
    Thanks @tarabyte, this saved me quite some time! For me using python 3.6, the .so file was here: /usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.cpython-36m-x86_64-linux-gnu.so – Daniel Kettemann Jul 05 '20 at 19:42