安装了 python opencv 2.4.11 但仅在系统中它说我只安装了 2.4.8
installed python opencv 2.4.11 but only in the system it says I installed only 2.4.8
我按照这个 link 安装了 opencv 2.4.11。然而,当我打印当前的 opencv 版本时,它说它是 2.4.8。谁能告诉我哪里出了问题?谢谢
https://gist.github.com/dynamicguy/3d1fce8dae65e765f7c4
P.s。我正在使用 Ubuntu 14.04.2 LTS。查看opencv当前版本的命令是
导入 cv2
打印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 7 月 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 7 月 26 日 21:35 libopencv_ml.a
-rw-r--r-- 1 根根 411916 7 月 26 日 21:44 libopencv_nonfree.a
-rw-r--r-- 1 root root 954904 7 月 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 7 月 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 7 月 26 日 21:29 libopencv_ts.a
-rw-r--r-- 1 根根 625806 7 月 26 日 21:29 libopencv_video.a
-rw-r--r-- 1 root root 508350 7 月 26 日 21:47 libopencv_videostab.a
更新:
从 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 行时安装的根据您遵循的说明(特别是此命令:sudo apt-get install libopencv-dev
)。
您遵循的说明中的第 23 行 (sudo make install
) 应该已将 OpenCV2.4.11 安装为默认的 OpenCV 库。这可以通过查看 ls -l /usr/local/lib | grep opencv
的输出来验证。
您可以通过查看 ls -l /usr/local/lib | grep opencv_core
的输出来简化输出,而不是查看许多行的输出。
您应该会看到如下内容:
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
案例 1:
如果你看到上面的行完全一样,那么这意味着你的 sudo make install
有效,因此,默认的 OpenCV 库版本(由 pkg-config --libs opencv
指向)是 2.4.11.然后你需要查看 python 模块路径,看看为什么你的 cv2 python 模块来自 OpenCV 2.4.8 而不是来自 OpenCV2.4.11 的模块。为此,您可以 运行 ls -l /usr/local/lib/python2.7/dist-packages/ | grep cv
以确保您看到 cv2 和 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)
仔细看看你输出的第一行:(例如)
libopencv_core.so.2.4 => /usr/local/lib/libopencv_core.so.2.4
。这是 python module/wrapper 使用的库。这应该指向 libopencv_core.so.2.4.11 而不是 libopencv_core.so.2.4.8。您可以使用之前使用的相同命令验证 libopencv_core.so.2.4
指向的位置。
案例二:
ls -l /usr/local/lib | grep opencv_core
的输出类似于:
libopencv_core.so -> libopencv_core.so.2.4
libopencv_core.so.2.4 -> libopencv_core.so.2.4.8
这意味着您在构建 OpenCV2.4.11 时 sudo make install
运行 由于某种原因无法正常工作。那么你有两个选择:
选项 1:
运行 make && sudo make install
来自 opencv-2.4.11/release
目录。然后按照上面的步骤,看看有没有看到这一行libopencv_core.so.2.4 -> libopencv_core.so.2.4.11。如果你看到它,import cv2 print cv2.version
应该打印 2.4.11.
选项 2
如果您看到文件 libopencv_core.so.2.4.11
存在于您的 /usr/local/lib
目录中,那么您可以创建一个 符号链接 以使默认的 OpenCV 库文件指向版本 2.4.11 (当您从 OpenCV 构建目录 运行 sudo make install
时自动完成)
我按照这个 link 安装了 opencv 2.4.11。然而,当我打印当前的 opencv 版本时,它说它是 2.4.8。谁能告诉我哪里出了问题?谢谢
https://gist.github.com/dynamicguy/3d1fce8dae65e765f7c4
P.s。我正在使用 Ubuntu 14.04.2 LTS。查看opencv当前版本的命令是
导入 cv2
打印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 7 月 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 7 月 26 日 21:35 libopencv_ml.a
-rw-r--r-- 1 根根 411916 7 月 26 日 21:44 libopencv_nonfree.a
-rw-r--r-- 1 root root 954904 7 月 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 7 月 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 7 月 26 日 21:29 libopencv_ts.a
-rw-r--r-- 1 根根 625806 7 月 26 日 21:29 libopencv_video.a
-rw-r--r-- 1 root root 508350 7 月 26 日 21:47 libopencv_videostab.a
更新:
从 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 行时安装的根据您遵循的说明(特别是此命令:sudo apt-get install libopencv-dev
)。
您遵循的说明中的第 23 行 (sudo make install
) 应该已将 OpenCV2.4.11 安装为默认的 OpenCV 库。这可以通过查看 ls -l /usr/local/lib | grep opencv
的输出来验证。
您可以通过查看 ls -l /usr/local/lib | grep opencv_core
的输出来简化输出,而不是查看许多行的输出。
您应该会看到如下内容:
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
案例 1:
如果你看到上面的行完全一样,那么这意味着你的 sudo make install
有效,因此,默认的 OpenCV 库版本(由 pkg-config --libs opencv
指向)是 2.4.11.然后你需要查看 python 模块路径,看看为什么你的 cv2 python 模块来自 OpenCV 2.4.8 而不是来自 OpenCV2.4.11 的模块。为此,您可以 运行 ls -l /usr/local/lib/python2.7/dist-packages/ | grep cv
以确保您看到 cv2 和 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)
仔细看看你输出的第一行:(例如)
libopencv_core.so.2.4 => /usr/local/lib/libopencv_core.so.2.4
。这是 python module/wrapper 使用的库。这应该指向 libopencv_core.so.2.4.11 而不是 libopencv_core.so.2.4.8。您可以使用之前使用的相同命令验证 libopencv_core.so.2.4
指向的位置。
案例二:
ls -l /usr/local/lib | grep opencv_core
的输出类似于:
libopencv_core.so -> libopencv_core.so.2.4
libopencv_core.so.2.4 -> libopencv_core.so.2.4.8
这意味着您在构建 OpenCV2.4.11 时 sudo make install
运行 由于某种原因无法正常工作。那么你有两个选择:
选项 1:
运行 make && sudo make install
来自 opencv-2.4.11/release
目录。然后按照上面的步骤,看看有没有看到这一行libopencv_core.so.2.4 -> libopencv_core.so.2.4.11。如果你看到它,import cv2 print cv2.version
应该打印 2.4.11.
选项 2
如果您看到文件 libopencv_core.so.2.4.11
存在于您的 /usr/local/lib
目录中,那么您可以创建一个 符号链接 以使默认的 OpenCV 库文件指向版本 2.4.11 (当您从 OpenCV 构建目录 运行 sudo make install
时自动完成)