非root用户安装OpenCV-2.4.13

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20965753/article/details/64138647

安装OpenCV-2.4.13
http://opencv.org/下载OpenCV-2.4.13. 解压:

unzip opencv-2.4.13.zip
mkdir PATH/OpenCV-2.4.13/OpenCV
cd opencv-2.4.13
mkdir build
cd build

OpenCV安装直接cmake即可, 不过在cmake的时候要指定一些安装和编译器的参数. 包括python的路径(因为以后要是有python调用opencv, 所以必须使用python编译.) 所以是用python安装OpenCV. 在cmke的时候加上\参数是为了参数方便. 下面用python-2.7.12来编译OpenCV.

cmake -D BUILD_opencv_gpu=OFF \
-D WITH_CUDA=OFF \
-D WITH_1394=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D BUILD_opencv_java=OFF \
-D WITH_FFMPEG=OFF \
-D WITH_GSTREAMER=OFF \
-D PYTHON_EXECUTABLE=PATH/python-2.7.12/python2/bin/python2/ \
-D PYTHON_INCLUDE_DIR=PATH/python-2.7.12/python2/include/python2.7/
-D PYTHON_LIBRARY=PATH/python-2.7.12/python2/lib/libpython2.7.so \
-D PYTHON_NUMPY_INCLUDE_DIRS=PATH/python-2.7.12/python2/lib/python2.7/site-packages/numpy/core/include/ \
-D PYTHON_PACKAGES_PATH=PATH/python-2.7.12/python2/lib/python2.7/site-packages/ \
-D EIGEN_INCLUDE_PATH=PATH/eigen-3.2.8/ \
-D LAPACK_IMPL=OpenBLAS \
-D LAPACK_LIBRARIES=PATH/OpenBLAS/lib/libopenblas.so \
-D WITH_TBB=OFF \
-D CMAKE_INSTALL_PREFIX=PATH/OpenCV-2.4.13/OpenCV ..

利用-D WITH_FFMPEG=OFF来避免安装好ffmpeg, 通过设置-D WITH_GSTREAMER=OFF让OpenCV编译的时候先不编译视频库. 另外在configure过程中可能也会出现找不到某些库的情况, 只要没有错误即可.

make -j12 # 使用多线程编译, 速度提高很快.

可能的错误信息:

libpython2.7.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC. 

要重新编译python-2.7.12: configure执行如下命令:

./configure --prefix=/home/jlu_guan/python-2.7.12/python2 --enable-optimizations CFLAGS=-fPIC CXXFLAGS=-fPIC

make install

OpenCV-2.4.13安装成功. 只是在编译的时候没有安装视频的功能, 如果以后用到可以再行编译一次即可. 安装完成后会生成一个cv2.so文件, 这是python来调OpenCV的库文件, 这个文件生成后会自动拷贝至python2的site-packages下. 检验python2是否可以使用cv:

>>>python
>>>import cv2

成功即可.
下面将PATH/OpenCV-2.4.13/OpenCV/lib/pkgconfig路径指定给环境变量PKG_CONFIG_PATH, 那么就可以用g++编译了.
将lib/pkgconfig文件夹下的opencv.pc指定给PKG_CONFIG_PATH, 还要将OpenCV/lib的库指定给LD_LIBRARY_PATH:

export PKG_CONFIG_PATH=PATH/OpenCV-2.4.13/OpenCV/lib/pkgconfig/:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=PATH/OpenCV-2.4.13/OpenCV/lib/:$LD_LIBRARY_PATH

也可以设置在.bashrc中.

用test_opencv.py检验, 可以正确运行:

$python test_opencv.py

由于将opencv.pc写进了PKG_CONFIG_PATH, 将OpenCV的lib文件包含在了LD_LIBRARY_PATH中, 因此可以编写g++的例子, 以及利用g++编译opencv例子:

g++ `pkg-config opencv --cflags --libs opencv` test_opencv.cpp

猜你喜欢

转载自blog.csdn.net/qq_20965753/article/details/64138647