【问题标题】:Unable to import cv2 after building from source从源代码构建后无法导入 cv2
【发布时间】:2018-04-29 03:56:37
【问题描述】:

我刚刚从源代码构建了 opencv,但似乎没有 python 绑定。

(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

然后这是我从源代码构建的方式,主要遵循 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

【问题讨论】:

  • 我遇到过类似的事情,这对我有用stackoverflow.com/questions/45667453/…
  • 将cv2 lib 文件从系统的 python site_packages 目录复制到您的 virtualenv (ocv) site_packages 目录。
  • 这些都不起作用。我的/usr/lib/{python2.7,python3,python3.5} 目录中没有site-packages 目录

标签: python-3.x opencv virtualenv virtualenvwrapper


【解决方案1】:

我忘记包含 opencv_contrib 项目并确保它与 opencv 项目在同一版本上。我也忘了符号链接共享对象文件。

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

之后,我的导入工作:

(ocv) me@vm:~$ python -c "import cv2"
(ocv) me@vm:~$

【讨论】:

  • 感谢@tarabyte,这为我节省了很多时间!对于我使用 python 3.6,.so 文件在这里:/usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.cpython-36m-x86_64-linux-gnu.so
猜你喜欢
  • 2020-04-01
  • 2014-01-22
  • 2020-08-11
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-05
相关资源
最近更新 更多