安装opencv后为什么缺少cv2.so?

时间:2013-04-03 14:42:52

标签: opencv

今天我将opencv 2.4.4安装到Ubuntu 12.10

但导入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在哪里?为什么错过了?

9 个答案:

答案 0 :(得分:46)

如何在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

  3. 下载最新的opencv
  4. 解开
    tar -xvf opencv-*
    
  5. 在untarred文件夹中创建一个名为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 ..
    

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

  6. 在发布文件夹中运行

    make
    
  7. 完成运行后约2-3分钟的制作处理

    sudo make install
    
  8. 导出python路径

    export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
    
  9. 就是这样,现在去python并尝试

    >>> import cv2
    

    你不应该收到任何错误信息。

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

答案 1 :(得分:11)

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

答案 2 :(得分:5)

在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

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

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

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

答案 3 :(得分:3)

当我在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

答案 4 :(得分:2)

我在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是一种更简单的选择。

答案 5 :(得分:2)

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

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

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

告诉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。 只有一次!否则你无法改变** PYTHON3_LIBRARY:不** ......(这是我认为的错误)

我知道可能会有一些无用的论点,但我很想尝试清理它们。 以下是我的cmake打印信息的屏幕截图。 screenshot of my cmake info

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

答案 6 :(得分:1)

以上都不适合我;我在Ubuntu 16.04的ec2实例&amp;安装了anaconda所以我刚刚使用了

我的conda2和3次安装

jQuery(document).ready(function () { $('#bookingform-startdate').datepicker($.extend({}, $.datepicker.regional['fr'], {"maxViewMode":2,"todayBtn":"linked","daysOfWeekDisabled":"0,1","autoclose":true,"onSelect":function(dateText, inst) { alert("Hi"); },"dateFormat":"d M yy"})); $('#bookingform-stopdate').datepicker($.extend({}, $.datepicker.regional['fr'], {"maxViewMode":2,"todayBtn":"linked","daysOfWeekDisabled":"0,1","autoclose":true,"onSelect":"alert(\u0022Hi\u0022)","dateFormat":"d M yy"})); });

答案 7 :(得分:0)

我遇到过类似的问题。在深入研究这一点之后,我遇到了一个帖子,其中提到需要python-numpy包。所以,我通过在build文件夹(在你的case release文件夹中)运行以下命令来卸载opencv:

dpkg -r build

然后我删除了所有opencv文件。我使用以下命令安装了python-numpypython-dev

sudo apt-get install python-dev python-numpy

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

答案 8 :(得分:0)

就我而言,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