【问题标题】:Why cv2.so missing after opencv installed?为什么安装 opencv 后 cv2.so 丢失?
【发布时间】:2013-03-25 07:19:23
【问题描述】:

今天我在 Ubuntu 12.10 上安装了 opencv 2.4.4

但是 import cv2 不起作用。

root@-:~# python
Python 2.7.3 (default, Sep 26 2012, 21:53:58) 
[GCC 4.7.2] on linux2
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
>>> 

据我了解 cv2.so 错过了,所以 python 看不到 opencv 在哪里

root@-:~# find / -name "cv.py"
/root/opencv-2.4.4/modules/python/src2/cv.py
root@-:~# find / -name "cv2.so"
root@-:~#

我的设置步骤如下所示

wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.4/OpenCV-2.4.4a.tar.bz2
tar -xjf OpenCV-2.4.4a.tar.bz2
cd opencv-2.4.4
mkdir release
cd release 
cmake -D CMAKE_BUILD_TYPE=RELEASE   -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON ..
make && make install
echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf
ldconfig  
echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig" >> /etc/bash.bashrc
echo "export PKG_CONFIG_PATH" >> /etc/bash.bashrc

cv2.so 在哪里?为什么错过了?

【问题讨论】:

  • Cmake 是否正确检测到您系统上的 python? Cmake 在你调用它之后会给你一个很长的屏幕输出。
  • 应该是libcv2.so,而不是cv2.so(可能位于/usr/local/lib下)
  • 确保sudo apt-get install python-devsudo apt-get upgrade cmake,并手动检查cmake输出以确保找到Python库(应该匹配which python);如果未找到,请参阅this thread 进行故障排除。
  • ln -s /usr/local/lib/python3.5/dist-packages/cv2.cpython-35m-x86_64-linux-gnu.so cv2.so

标签: opencv


【解决方案1】:

如何在 Linux 中安装带有 python 绑定的 opencv(cv2) - Ubuntu/Fedora

  1. 安装gcc、g++/gcc-c++、cmake(apt-get或yum,以防yum 使用 gcc-c++)

    apt-get install gcc, g++, cmake
    
  2. openCV's website下载最新的opencv

  3. 解压

    tar -xvf opencv-*
    
  4. 在解压后的文件夹中创建一个名为release的新文件夹

    mkdir release
    cd release
    

    (或任何文件夹名称)并在其中运行此命令

    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..
    

    .. 将从父文件夹中提取文件并使系统做好准备 在您的平台上安装。

  5. 在发布文件夹中运行

    make
    
  6. 在 make 运行完成后大约 2-3 分钟后处理

    sudo make install
    
  7. 导出python路径

    export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
    

就是这样,现在去python试试

>>> import cv2

您应该不会收到任何错误消息。

在 python 2.7 上测试,应该与 python 3.x 几乎相似。

【讨论】:

  • 还要确保安装了python开发头文件(sudo apt-get install python-dev)。
  • 这对我在 Mac OSX、Python 2.7 上不起作用。我在任何阶段都没有看到错误,但仍然无法 >>>import cv2
  • 这对我在 RHEL6 上也不起作用,Python 2.7 设置为虚拟环境。我在任何阶段都没有看到错误,但仍然无法导入 cv2。显然成功安装后,我的计算机上的任何地方都没有 cv2.so。 @rd108,你找到解决办法了吗?
  • 需要导出安装Python库的路径,如export PYTHONPATH=~/projects/opencv/release/lib:$PYTHONPATH
  • BUILD_NEW_PYTHON_SUPPORT=ON 显然不再使用。
【解决方案2】:

我安装 python-opencv 来解决我在 Ubuntu 14.04 中的问题 sh sudo apt-get install python-opencv

【讨论】:

  • 天啊为什么没人这么说??????容易多了!这为我提供了 opencv 2.4.1,谢谢!
  • 这确实是一个不错的选择。想要最新版openCV的用户还是需要自己编译项目。
【解决方案3】:

在 rasberry pi 上使用 raspbian 我也遇到了找不到模块的问题。我有三个版本的 python(2.6、2.7 和 3.2),请确保您使用的是 python2.7。您可以通过运行来检查:

python --version

我发现我的情况只是我需要安装 python-dev。

sudo apt-get install python-dev

我不必删除并重新安装 opencv,我尽我所能避免这种情况,因为我知道完成该过程需要几个小时。

安装 python-dev 后,我转到我构建 opencv 的文件,对我来说它是“~/opencv-2.4.9/release”,并告诉它制作

sudo make

在此之后,我能够找到 cv2.so 文件。搜索它:

find / -name "cv2.so"

此时我发现了一些文件。 接下来我只运行 python 看看它是否能找到“导入”它们

python 
>>> import cv2

应该不会出现错误。

>>> import numpy

我听说 numpy 是 opencv 运行所必需的。 从那里我相信你应该很好地运行你的脚本,如果没有错误发生的话。我希望这有帮助。

列出了对我有帮助的页面...

http://opencv-users.1802565.n2.nabble.com/I-can-t-find-cv-so-and-cv2-so-after-compiling-td6671937.html

【讨论】:

  • 安装 python-dev 然后重新制作/重新安装对我有用。
【解决方案4】:

我在 OSX El Capitan 上使用 CMAKE 手动配置时遇到了类似的问题。我已经给出了这个额外的选项:

PYTHON2_PACKAGES_PATH='lib/python2.7/site-packages'

这阻止了该软件包中的 cv2.so 安装。在我删除它后,它似乎可以正确安装在我的构建文件夹中:

PYTHON2_EXECUTABLE='/usr/bin/python2.7'
PYTHON2_INCLUDE_DIR='/usr/include/python2.7'
PYTHON2_LIBRARY='/usr/lib/libpython2.7.dylib' # TODO - Fix for linux
PYTHON2_NUMPY_INCLUDE_DIRS='/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/include' # Todo - Fix for linux


cd $OPENCV_DIR

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=$OPENCV_INSTALL_PATH \
                                  -D WITH_CUDA=OFF \
                                  -D BUILD_opencv_python2:BOOL=ON \
                                  -D PYTHON2_EXECUTABLE=$PYTHON2_EXECUTABLE \
                                  -D PYTHON2_INCLUDE_DIR=$PYTHON2_INCLUDE_DIR \
                                  -D PYTHON2_LIBRARY=$PYTHON2_LIBRARY \
                                  -D PYTHON2_NUMPY_INCLUDE_DIRS=$PYTHON2_NUMPY_INCLUDE_DIRS \
                                  -D INSTALL_PYTHON_EXAMPLES:BOOL=ON \
                                  ..
make -j8
make install

【讨论】:

    【解决方案5】:

    我在我的 OS X El Capitan 中遇到了这个问题。

    我按照this tutorial 中提到的说明进行操作。没有获得成功的工作安装,并且在所需的文件夹mentionedpython 提示符处出现上述缺少 cv2.so 文件的错误。

    终于发现使用虚拟 python 设置会造成麻烦。所以用

    卸载
    pip install virtualenv virtualenvwrapper
    

    然后跑了

    brew link opencv
    

    引发错误。

    然后按照以下步骤解决问题。

    第一次运行

    brew link opencv
    

    如果出现错误,请尝试自动诊断

    brew doctor
    

    brew doctor 列出了可能导致安装过程出错的问题列表。

    在文件冲突的情况下解决问题, 运行以获取所有操作的列表,这些操作将通过覆盖而不实际执行来执行

    列出所有将被删除的文件:

      brew link --overwrite --dry-run opencv
    

    接下来会执行覆盖,假设您认为覆盖执行的操作将使您的系统进入一个更稳定的状态

    强制链接并覆盖所有冲突文件:

     brew link --overwrite opencv
    

    This tutorial 是一个更简单的替代方案。

    【讨论】:

      【解决方案6】:

      以上都不适合我;我在 ec2 实例上的 Ubuntu 16.04 中安装了 anaconda,所以我只是使用了

      conda install opencv 用于我的 conda2 和 3 安装

      【讨论】:

        【解决方案7】:

        以上所有答案对我不起作用,但是经过一整天的努力,我终于解决了这个问题。

        要拥有 cv2.so,我们需要:

        1. 至少安装了 python 2 或 3。这就是为什么人们说:sudo apt-get install python-dev。但这没有必要,就我而言,我使用 anaconda python。 (安装python的方式有很多种)
        2. numpy 也是必须的。所以,无论你使用什么 python,只要确保你已经下载了它。就我而言,我使用 anaconda numpy。 (anaconda 已经安装好了,对于普通的 python,使用pip install numpy

        告诉camke路径在哪里,以我的命令为例:

        cmake -D CMAKE_BUILD_TYPE=RELEASE \
              -D CMAKE_INSTALL_PREFIX=/usr/local \
              -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
              -D PYTHON2_EXECUTABLE='/home/parallels/anaconda2/bin/python' \
              -D PYTHON2_LIBRARY='/home/parallels/anaconda2/lib/python2.7' \
              -D PYTHON2_NUMPY_INCLUDE_DIRS='/home/parallels/anaconda2/lib/python2.7/site-packages/numpy/core/include' \
              -D BUILD_EXAMPLES=ON ..
        

        对于python3,你应该(我使用的是anaconda python,所以我将所有东西都链接到anaconda):

        cmake -D CMAKE_BUILD_TYPE=Release \
              -D CMAKE_INSTALL_PREFIX=/usr/local \
              -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.3.1/modules \
              -D PYTHON3_EXECUTABLE='/home/test/SoftWare/anaconda3/bin/python3.6m' \
              -D PYTHON_INCLUDE_DIR='/home/test/SoftWare/anaconda3/include/python3.6m' \
              -D PYTHON3_LIBRARY='/home/test/SoftWare/anaconda3/lib/libpython3.6m.so' \
              -D PYTHON3_NUMPY_INCLUDE_DIRS='/home/test/SoftWare/anaconda3/lib/python3.6/site-packages/numpy/core/include' \
              -D PYTHON3_PACKAGES_PATH='/home/test/SoftWare/anaconda3/lib/python3.6/site-packages' ..
        

        要记住的一件事!!!在你进入 cmake 之前... 1. 清理你的构建文件夹,2. 只 camke 一次! 否则你不能改变** PYTHON3_LIBRARY: NO**...(我认为这是一个错误)

        我知道可能会有一些无用的争论,但我已经厌倦了试图清理它们。 这是我的 cmake 打印信息的屏幕截图。 screenshot of my cmake info

        可以清楚的看到,只有python2可以生成cv2.so。 python3不行! (无法生成 Python3 包装器)。

        【讨论】:

          【解决方案8】:

          我遇到了类似的问题。在深入研究这个之后,我遇到了一个帖子,其中提到需要python-numpy 包。因此,我通过在构建文件夹(在您的发布文件夹中)运行以下命令来卸载 opencv:

          dpkg -r build
          

          然后我删除了所有的 opencv 文件。我用这个命令安装了python-numpypython-dev

          sudo apt-get install python-dev python-numpy
          

          然后,重新运行安装脚本后,python控制台中的import cv2命令没有给我任何错误,并且正确导入。

          【讨论】:

            【解决方案9】:

            就我而言,cmake 有问题:

            sudo apt install software-properties-common
            sudo add-apt-repository ppa:george-edison55/cmake-3.x
            sudo apt update
            

            如果cmake 尚未安装:

            sudo apt install cmake
            

            如果cmake 已经安装:

            sudo apt upgrade
            

            有关详细信息,请参阅this link

            【讨论】:

              猜你喜欢
              • 2018-07-13
              • 1970-01-01
              • 2021-11-22
              • 1970-01-01
              • 2015-04-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多