Ubuntu16.04 Anaconda 安裝pyth3.6 和opencv3.1.0
由於ubuntu14.04/16.04都自帶了python2.7和python3.5,所以無需在安裝python。
如果需要安裝python3.6,則需要重新安裝
由於ubuntu14.04/16.04都自帶了python2.7和python3.5,所以無需在安裝python。
1、檢查python是否安裝:
~ whereis python
2、首先需要的是 pip:
~ sudo apt-get install python3-setuptools python3-dev sudo easy_install3 pip
安裝pip3
curl https://bootstrap.pypa.io/get-pip.py
3、然後是 numpy:
~ pip3 install numpy
4、安裝依賴:
1)、~ sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
2)、sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
2. 安裝OpenCV3.3.1
(1)下載opencv和opencv_contrib,在剛才的終端中輸入:
git clone https://github.com/opencv/opencv.git
去下載對應版本的opencv_contrib
會在home中發現有opencv和opencv_contrib兩個資料夾,則下載成功
(2)用cmake配置屬性(cpu版):
首先資料夾opencv新建一個build資料夾
cd ~/opencv
mkdir build
cd build #開啟build資料夾
配置編譯opencv
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D PYTHON3_EXECUTABLE=/usr/bin/python3 -D PYTHON_INCLUDE_DIR=/usr/include/python3.5 -D PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=/data1/storage_proxy/deeplearning/dl_project/inceptionv3/data/opencv-3.1.0/opencv_contrib/modules -D BUILD_EXAMPLES=ON -D CMAKE_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/stubs -D CUDA_CUDA_LIBRARY=/usr/local/cuda-8.0/lib64/stubs/libcuda.so ..
該步成功,之後輸入:
make -j7 # 7個任務並行,加快安裝(親測,如果輸入的是make-j,電腦安裝慢,還宕機了,導致安裝失敗)
sudo make install
至此,安裝完成
如想要查詢安裝的版本
輸入:
python3
import cv2
cv2.__version__
可以得到:
**** 如果沒有出現上面的結果,出現ImportError: No module named cv2 報錯,
pip3 install opencv-python 可以解決這個問題
錯誤1:samples/gpu/CMakeFiles/example_gpu_hog.dir/build.make:122: recipe for target
這是因為編譯的時候沒有加入cuda-8.0路徑
解決辦法:cmake的時候加入-D CMAKE_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/stubs -D CUDA_CUDA_LIBRARY=/usr/local/cuda-8.0/lib64/stubs/libcuda.so ..
錯誤2:In file included from /home/avtomaton/arbeit/sdk/cxx/opencv/build/modules/python2/pyopencv_generated_include.h:11:0,
from /home/avtomaton/arbeit/sdk/cxx/opencv/modules/python/src2/cv2.cpp:12:
/home/avtomaton/arbeit/sdk/cxx/opencv_contrib/modules/hdf/include/opencv2/hdf/hdf5.hpp:40:18: fatal error: hdf5.h: No such file or directory
解決辦法:into modules/python/common.cmake
# This file is included from a subdirectory
set(PYTHON_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../")ocv_add_module(${MODULE_NAME} BINDINGS)
became
# This file is included from a subdirectory
set(PYTHON_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../")find_package(HDF5)
include_directories(${HDF5_INCLUDE_DIRS})ocv_add_module(${MODULE_NAME} BINDINGS)
python3.5中編譯opencv可能會出現以下錯誤:
錯誤:在編譯安裝opencv3.1時可能會報錯
-
modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/build.make:290: recipe for target ‘modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o’ failed
-
make[2]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o] Error
這是CUDA配置出錯。
解決辦法1:不用CUDA在cmake時設定-DWITH_CUDA=OFF
解決辦法2:GraphCut在cuda7.5中棄用,在cuda8.0中被移除。
修改 ~/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp
檔案
把第45
行修改成:
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
即在 \#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
加上 || (CUDART_VERSION >= 8000)
錯誤2:
opencv3.1+opencv_contrib編譯,cmake時候遇到下面問題:
[plain] view plain copy
- CMake Error at /home/ubuntu/opencv3.1.0/opencv-3.1.0/cmake/OpenCVUtils.cmake:895 (file):
- file DOWNLOAD cannot open file for write.
- Call Stack (most recent call first):
- /home/ubuntu/opencv3.1.0/opencv_contrib/modules/dnn_modern/CMakeLists.txt:20 (ocv_download)
- CMake Error at /home/ubuntu/opencv3.1.0/opencv-3.1.0/cmake/OpenCVUtils.cmake:899 (message):
- Failed to download . Status=
- Call Stack (most recent call first):
- /home/ubuntu/opencv3.1.0/opencv_contrib/modules/dnn_modern/CMakeLists.txt:20 (ocv_download)
- -- Configuring incomplete, errors occurred!
- See also "/home/ubuntu/opencv3.1.0/opencv-3.1.0/build/CMakeFiles/CMakeOutput.log".
- See also "/home/ubuntu/opencv3.1.0/opencv-3.1.0/build/CMakeFiles/CMakeError.log".
-
CMake Error at /home/ubuntu/opencv3.1.0/opencv-3.1.0/cmake/OpenCVUtils.cmake:895 (file):
-
file DOWNLOAD cannot open file for write.
-
Call Stack (most recent call first):
-
/home/ubuntu/opencv3.1.0/opencv_contrib/modules/dnn_modern/CMakeLists.txt:20 (ocv_download)
-
CMake Error at /home/ubuntu/opencv3.1.0/opencv-3.1.0/cmake/OpenCVUtils.cmake:899 (message):
-
Failed to download . Status=
-
Call Stack (most recent call first):
-
/home/ubuntu/opencv3.1.0/opencv_contrib/modules/dnn_modern/CMakeLists.txt:20 (ocv_download)
-
-- Configuring incomplete, errors occurred!
-
See also "/home/ubuntu/opencv3.1.0/opencv-3.1.0/build/CMakeFiles/CMakeOutput.log".
-
See also "/home/ubuntu/opencv3.1.0/opencv-3.1.0/build/CMakeFiles/CMakeError.log".
需要把
[plain] view plain copy
- opencv_contrib/modules/dnn_modern/CMakeLists.txt 中的FILENAME替換為PACKAGE
- 對應的**.cmake也中對應錯誤處 中的FILENAME替換為PACKAGE
同理,其他地方報錯,繼續如此替換即可!
參考連結:
1. Ubuntu16.04下安裝OpenCV3.2.0 - Arkenstone - 部落格園 http://www.cnblogs.com/arkenstone/p/6490017.html
2. OpenCV: Installation in Linux https://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html