安装了python opencv 2.4.11,但只在系统中说我安装的只有2.4.8

时间:2015-07-26 19:05:28

标签: python opencv version

我按照此链接安装了opencv 2.4.11。但是,当我打印当前的opencv版本时,它说它是2.4.8。有人能告诉我出了什么问题吗?感谢。

https://gist.github.com/dynamicguy/3d1fce8dae65e765f7c4

P.S。我使用的是Ubuntu 14.04.2 LTS。检查opencv当前版本的命令是

导入cv2

print cv2 .__ version __

正如PraveenPalanisamy所建议的那样,我发布了运行命令的结果

ls -l / usr / local / lib | grep opencv

-rw-r - r-- 1 root root 1483006 7月26日21:33 libopencv_calib3d.a

-rw-r - r-- 1 root root 1850138 7月26日21:45 libopencv_contrib.a

-rw-r - r-- 1 root root 4811636 7月26日21:26 libopencv_core.a

-rw-r - r-- 1 root root 1420516 7月26日21:29 libopencv_features2d.a

-rw-r - r-- 1 root root 1100238 7月26日21:26 libopencv_flann.a

-rw-r - r-- 1 root root 863666 7月26日21:39 libopencv_gpu.a

-rw-r - r-- 1 root root 1258032 7月26日21:28 libopencv_highgui.a

-rw-r - r-- 1 root root 4363758 Jul 26 21:28 libopencv_imgproc.a

-rw-r - r-- 1 root root 2400896 7月26日21:37 libopencv_legacy.a

-rw-r - r-- 1 root root 1051714 Jul 26 21:35 libopencv_ml.a

-rw-r - r-- 1 root root 411916 Jul 26 21:44 libopencv_nonfree.a

-rw-r - r-- 1 root root 954904 Jul 26 21:38 libopencv_objdetect.a

-rw-r - r-- 1 root root 3269948 7月26日21:41 libopencv_ocl.a

-rw-r - r-- 1 root root 187250 7月26日21:38 libopencv_photo.a

-rw-r - r-- 1 root root 960120 Jul 26 21:46 libopencv_stitching.a

-rw-r - r-- 1 root root 543080 7月26日21:47 libopencv_superres.a

-rw-r - r-- 1 root root 1779168 Jul 26 21:29 libopencv_ts.a

-rw-r - r-- 1 root root 625806 7月26日21:29 libopencv_video.a

-rw-r - r-- 1 root root 508350 7月26日21:47 libopencv_videostab.a

1 个答案:

答案 0 :(得分:0)

<强>更新ls -l /usr/local/lib | grep opencv的输出看起来像构建静态OpenCV库。由于说明中第21行的-D BUILD_SHARED_LIBS=OFF标志。您可以从该行中删除-D BUILD_SHARED_LIBS=OFF并再次检查安装过程以进行全新安装,或者只使用当前状态运行以下3行:

cmake -G "Unix Makefiles" -D CMAKE_CXX_COMPILER=/usr/bin/g++ CMAKE_C_COMPILER=/usr/bin/gcc -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D BUILD_FAT_JAVA_LIB=ON -D INSTALL_TO_MANGLED_PATHS=ON -D INSTALL_CREATE_DISTRIB=ON -D INSTALL_TESTS=ON -D ENABLE_FAST_MATH=ON -D WITH_IMAGEIO=ON -D WITH_GSTREAMER=ON ..
make all -j4 # 4 cores
sudo make install

。应该建立共享的OpenCV库,希望它能解决你的问题。如果由于某种原因你仍然得到相同的错误,那么使用我的答案的剩余部分(下面)来解决问题:

出于某种原因,您要导入的python模块 cv2 来自OpenCV 2.4.8,当您从所遵循的指令运行第11行时安装了该模块(具体为此命令:{{ 1}})。 您遵循的说明中的第23行(sudo apt-get install libopencv-dev)应该已将OpenCV2.4.11安装为默认的OpenCV库。可以通过查看sudo make install的输出来验证。 您可以通过查看ls -l /usr/local/lib | grep opencv的输出来简化输出,而不是查看输出的多行。 你应该看到类似的东西:

ls -l /usr/local/lib | grep opencv_core

案例1 : 如果您完全按原样看到上述行,则表示您的libopencv_core.so -> libopencv_core.so.2.4 libopencv_core.so.2.4 -> libopencv_core.so.2.4.11 libopencv_core.so.2.4.11 libopencv_core.so.2.4.8 工作正常,因此默认的OpenCV库版本(由sudo make install指向)为 2.4.11 。然后你需要查看python模块路径,看看为什么 cv2 python模块来自OpenCV 2.4.8而不是来自OpenCV2.4.11的模块。为此,您可以运行pkg-config --libs opencv以确保列出 cv2 cv (例如,请参阅以下行)

ls -l /usr/local/lib/python2.7/dist-packages/ | grep cv

然后,查看$ ls -l /usr/local/lib/python2.7/dist-packages/ | grep cv -rw-r--r-- 1 root staff 1638779 Jul 13 18:29 cv2.so -rw-r--r-- 1 root staff 21 Feb 25 07:10 cv.py 的输出,它应该类似于:

ldd /usr/local/lib/python2.7/dist-packages/cv2.so | grep opencv

仔细查看输出的第一行:(例如) libopencv_core.so.2.4 => /usr/local/lib/libopencv_core.so.2.4 (0x00007f0df24e2000) libopencv_flann.so.2.4 => /usr/local/lib/libopencv_flann.so.2.4 (0x00007f0df226e000) libopencv_imgproc.so.2.4 => /usr/local/lib/libopencv_imgproc.so.2.4 (0x00007f0df1d7f000) libopencv_highgui.so.2.4 => /usr/local/lib/libopencv_highgui.so.2.4 (0x00007f0df1ad2000) 。这是python模块/包装器使用的库。这应该指向 libopencv_core.so.2.4.11 而不是 libopencv_core.so.2.4.8 。您可以使用之前使用的相同命令(libopencv_core.so.2.4 => /usr/local/lib/libopencv_core.so.2.4)验证libopencv_core.so.2.4指向的位置。

案例2: ls -l /usr/local/lib | grep opencv的输出类似于:

ls -l /usr/local/lib | grep opencv_core

这意味着您在构建OpenCV2.4.11时运行的libopencv_core.so -> libopencv_core.so.2.4 libopencv_core.so.2.4 -> libopencv_core.so.2.4.8 由于某种原因无效。那你可以有两个选择:

选择1 : 从sudo make install目录运行make && sudo make install。然后按照上面的步骤查看是否显示此行 libopencv_core.so.2.4 - &gt; libopencv_core.so.2.4.11 即可。如果你看到它,opencv-2.4.11/release应打印2.4.11。

选择2 如果您在import cv2 print cv2.version目录中看到文件libopencv_core.so.2.4.11,则可以创建符号链接,以使默认的OpenCV库文件指向版本2.4.11(这是从OpenCV构建目录运行/usr/local/lib时自动完成