一、安装cmake
下载安装包: https://github.com/Kitware/CMake/releases?after=v3.10.0-rc2 用的版本是3.9.2
解压缩
配置环境变量
1 | export PATH=$PATH:/home/master/install/cmake-3.9.2-Linux-x86_64/bin |
安装完毕进行测试:
cmake --version
参考:CMake Error: Could not find CMAKE_ROOT?
二、Ubuntu16.04 LTS安装OpenCV3.4.9及OpenCV Contrib for Java
1.国内服务器更换阿里云源
1 | sudo cp /etc/apt/sources.list /etc/apt/sources.list.old |
阿里云源地址:Ubuntu 镜像
1 | sudo apt-get update |
添加github相关hosts
CMakeDownloadLog.txt
1 | try 1 |
去ipaddress上面查询github.com
和raw.githubusercontent.com
相关的ip,然后添加到/etc/hosts文件中:
1 | GitHub Start |
同时安装证书:解决“正在连接 raw.githubusercontent.com|151.101.228.133|:443… 失败:拒绝连接”的方法
2.安装软件相关的依赖
1 | [compiler] sudo apt-get install build-essential |
注意:依赖谨慎安装,不是安装越多越好!按照自己需要的安装就行。
安装OpenCV源文档:Installation in Linux
“在生成OpenCV的Makefile之前,cmake工具会检查当前系统中是否已经配置好了Java环境,以决定是否会生成Java开发相应的包。因此,我们首先要确认当前系统已经配置好了Java的开发环境,这一部分内容不属于本文的重点,请参看其他文章。”
问题:
1 | liblzma-dev : 依赖: liblzma5 (= 5.1.1alpha+20120614-2ubuntu2) 但是 5.2.2-1.3 正要被安装 |
解决:ubuntu安装软件时:有未能满足的依赖关系,使用aptitude,解决问题。
使用知识:
1 | 查看软件是否安装 |
1 | -- The imported target "vtkInfovisJava" references the file |
3.下载源码并创建编译文件夹
创建一个文件夹用来存储编译产生的文件
下载地址:opencv源码、opencv contrib源码
注意:请确保opencv和opencv contrib的版本是一致的。
1 | cd ~/opencv |
4.使用CMake编译OpenCV
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_TESTS=OFF ..
如果报错,去掉-D后面的空格,即:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTS=OFF ..
1 | cmake -DOPENCV_ENABLE_NONFREE=ON -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DENABLE_PRECOMPILED_HEADERS=OFF -DBUILD_TIFF=ON -DOPENCV_EXTRA_MODULES_PATH=<path/to/opencv_contrib/modules/> -DCMAKE_INSTALL_PREFIX=/usr/local .. |
opencv-3.4.9/3rdparty/ippicv/ippicv.cmake
1 | "${OPENCV_IPPICV_URL}" |
修改为本地路径:file:///home/liwen/package/opencvDownLoads/
opencv_contrib-3.4.9/modules/face/CMakeLists.txt
https://blog.csdn.net/qq_34806812/article/details/82501999
注意:确保To be built有java
5.编译
1 | sudo make -j7 #使用7个线程编译 |
但是使用自己的机器编译时,使用多线程常出错,错误信息:
1 | [ 42%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/mathfuncs_core.avx.cpp.o |
所以,选择单线程编译:
1 | sudo make |
问题
1 | [ 97%] Generating opencv-349.jar |
原因:自己安装了jdk,另外系统里面又安装了open-jdk,导致环境冲突。
解决:卸载open-jdk,同时添加CLASSPATH
1 | sudo apt-get remove openjdk* |
1 | export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar |
或者安装openjdk和ant
1 | sudo apt-get install openjdk-8-jdk |
如果有: ImportError: /usr/local/lib/libopencv_freetype.so.3.2: undefined symbol: hb_shape
1 | sed -i 's/${freetype2_LIBRARIES} ${harfbuzz_LIBRARIES}/${FREETYPE_LIBRARIES} ${HARFBUZZ_LIBRARIES}/g' ../opencv_contrib-3.2.0/modules/freetype/CMakeLists.txt |
6.安装库,从构建目录执行以下命令
1 | sudo make install |
Java开发相关的动态链接库文件和jar包位于目录:
1 | /usr/local/share/OpenCV/java/ |
参考:
2.Getting started with OpenCV for Java on Ubuntu
3.Ubuntu 16.04配置OpenCV 3.1.0 for Java
7.linux下安装opencv并生成opencv-java,即linux下用java调用opencv
三、卸载OpenCV
1.查看已安装的opencv版本
pkg-config --modversion opencv
2.卸载
首先要找到当初安装opencv的build目录,进入该build目录执行卸载操作
1 | sudo make uninstall |
如果找不见该build目录,可以重新建立build目录安装对应版本,然后再执行上边卸载步骤。然后清理/usr中所有opencv相关项
1 | sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv* |
eclipse安装
- 首先输入指令: cd /usr/share/applications
- 然后输入指令: sudo vim eclipse.desktop
1 | [Desktop Entry] |
其中“Exec=”后面为eclipse安装目录下的eclipse程序的位置路径,“Icon=”后面为eclipse安装目录下的图标图片的路径
将eclipse变为可执行文件
sudo chmod u+x eclipse.desktop