linux下无权限安装opencv3.4.6

下载opencv3.4.6源码

https://codeload.github.com/opencv/opencv/zip/3.4.6

编译安装opencv3.4.6

可以使用unzip进行解压了(如果使用不了unzip解压,说明文件下载不全,文件有88MB)

unzip opencv-3.4.6.zip
mkdir build && cd build

其中CMAKE_INSTALL_PREFIX=/home/caffe/opencv34/ 表示是opencv3.4.6编译安装的路径,这个需要自己设置。

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/home/caffe/opencv34/ ..

 编译的过程可能会出现

可能需要在根目录下部分依赖安装(root权限)

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev

 因为网络原因无法下载完全ippicv_2019_lnx_intel64_general_20180723.tgz,需要将这个文件下载到本地,下载地址https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20180723/ippicv。将ippicv_2019_lnx_intel64_general_20180723.tgz放在了caffe用户目录下的download文件夹下。

将ippicv的http下载注释掉,然后指定一下ippcv的本地文件

vim ~/opencv-3.4.6/3rdparty/ippicv/ippicv.cmake

具体需要根据自己的路径进行修改 

"file:///home/caffe/download/"

 按照如图进行修改

然后继续编译设置

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/home/caffe/opencv34/ ..

编译安装

make all -j12 

 

make install

 

需要配置一下opencv环境,

注意opencv安装在了/home/caffe/opencv34/文件夹里面了

vim ~/.bashrc
​export PKG_CONFIG_PATH=/home/caffe/opencv34/lib/pkgconfig
export LD_LIBRARY_PATH=/home/caffe/opencv34/lib
​source ~/.bashrc

 也可以简单测试一下,显示出opencv version基本上就是没有什么问题了

pkg-config opencv --modversion

 测试

这个测试是用opencv3.4.6自带的的例子

cd /home/caffe/opencv-3.4.6/samples/cpp/example_cmake
cmake .
make
./opencv_example 

发现使用的是根目录下的opencv4.2.0,默认是使用的是根目录下的opencv,需要将cmake中的路径修改一下

还是在上面的目录下(example_cmake),打开CMakeList.txt文件

vim CMakeLists.txt 

将其放在find_package(OpenCV REQUIRED)上面,添加一行设置opencv路径,上面由CMAKE_INSTALL_PREFIX=/home/caffe/opencv34/可以知道opencv编译安装的位置上

set(OpenCV_DIR "/home/caffe/opencv34/share/OpenCV")

清除上面的make,继续执行

cd /home/caffe/opencv-3.4.6/samples/cpp/example_cmake
make clean
make
./opencv_example 

显示,只是打不开摄像头,那就说明没有问题

小知识点

CMakeLists中的find_package(OpenCV REQUIRED)会在Ubuntu系统中找到opencv的设置文件OpenCVConfig.cmake,该文件定义了OpenCV_INCLUDE_DIRS和OpenCV_LIBS 等变量,因而可以使用 include_directories和target_link_libraries来访问这两个变量。

locate OpenCVConfig.cmake

看到如图,发现很多opencv路径,找到需要的opencv路径就可以了:

文件OpenCVConfig.cmake,文件头部有注释如下:

#    In your CMakeLists.txt, add these lines:
#
#    find_package(OpenCV REQUIRED)
#    include_directories(${OpenCV_INCLUDE_DIRS}) # Not needed for CMake >= 2.8.11
#    target_link_libraries(MY_TARGET_NAME ${OpenCV_LIBS})
#
#    Or you can search for specific OpenCV modules:
#
#    find_package(OpenCV REQUIRED core videoio)
#
#    You can also mark OpenCV components as optional:

#    find_package(OpenCV REQUIRED core OPTIONAL_COMPONENTS viz)
#
#    If the module is found then OPENCV_<MODULE>_FOUND is set to TRUE.
#
#    This file will define the following variables:
#      - OpenCV_LIBS                     : The list of all imported targets for OpenCV modules.
#      - OpenCV_INCLUDE_DIRS             : The OpenCV include directories.
#      - OpenCV_COMPUTE_CAPABILITIES     : The version of compute capability.
#      - OpenCV_ANDROID_NATIVE_API_LEVEL : Minimum required level of Android API.
#      - OpenCV_VERSION                  : The version of this OpenCV build: "3.4.6"
#      - OpenCV_VERSION_MAJOR            : Major version part of OpenCV_VERSION: "3"
#      - OpenCV_VERSION_MINOR            : Minor version part of OpenCV_VERSION: "4"
#      - OpenCV_VERSION_PATCH            : Patch version part of OpenCV_VERSION: "6"
#      - OpenCV_VERSION_STATUS           : Development status of this build: ""
#
#    Advanced variables:
#      - OpenCV_SHARED                   : Use OpenCV as shared library
#      - OpenCV_INSTALL_PATH             : OpenCV location
#      - OpenCV_LIB_COMPONENTS           : Present OpenCV modules list
#      - OpenCV_USE_MANGLED_PATHS        : Mangled OpenCV path flag
#
#    Deprecated variables:
#      - OpenCV_VERSION_TWEAK            : Always "0"
发布了102 篇原创文章 · 获赞 117 · 访问量 33万+

猜你喜欢

转载自blog.csdn.net/pursuit_zhangyu/article/details/104754087