其他网络教程的常规编译方式:
## 创建安装目录 [root@localhost /]# mkdir -p /usr/local/opencv_make [root@localhost opencv_make]# cd /usr/local/opencv_make [root@localhost opencv_make]# mkdir release ##解压 [root@localhost opencv_make]# tar -zvxf opencv-4.1.0 [root@localhost opencv_make]# cd opencv-4.1.0 ## 创建编译目录 [root@localhost opencv-4.1.0]# mkdir build [root@localhost build]# cd build ## 需要手动安装3.5版本以上的cmake,参考另一篇文章;yum 下载的cmake为低版本,进行编译会报错 ## 安装编译所需的软件 [root@localhost build]# yum -y install gcc gcc-c++ gtk±devel gimp-devel gimp-devel-tools gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpng-devel gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-devel jasper-devel jasper-utils swig python libtool nasm build-essential ant [root@localhost build]# cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv_make/release -DBUILD_TESTS=OFF .. ## 编译 [root@localhost build]# make -j8 & make [root@localhost build]# cd /usr/local/opencv_make/opencv-4.1.0/build/lib
原因分析: 这种常规编译本身没有什么问题,但是有如下几个注意的点
- 这是远程服务器上或虚拟机中的环境,可以看到登陆账户是 root@localhost
- java环境在linux上配置主要有两种,一种是openJDK使用包管理工具直接安装(例如:sudo apt-get install jdk1.8),另一种是从官网下载linux平台的JDK解压后,配置到linux中的全局变量JAVA_HOME
- 如果是从官网下载的JDK,那么在配置JAVA_HOME时,根据网上的推荐配置有一下三种方式
sudo vim ~/.bashrc (这是各个用户目录下的配置) sudo vim /etc/bash.bashrc (根用户的配置,我们需要把环境变量配置在这里,所有的用户都可以读取) sudo vim /etc/profile (这是ubuntu下的配置,opencv的脚本读不到)
- 没有配置ant
解决方案:
- 配置ant
sudo apt-get install ant
- 在根用户环境变量中配置JAVA_HOME
sudo vim /etc/bash.bashrc export JAVA_HOME=/usr/local/jdk8/jdk1.8.0_291 export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin
- 切换到根用户
su
- 执行cmake
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv_make/release -DBUILD_TESTS=OFF ..
- 如果在输出中看到java项出现在编译队列中且java编译选项中ant, JNI和Java wrappers 能够被识别,那么恭喜你配置生效了
-- OpenCV modules: -- To be built: calib3d core dnn features2d flann gapi highgui imgcodecs imgproc java java_bindings_generator ml objdetect photo python3 python_bindings_generator stitching ts video videoio -- Disabled: world -- Disabled by dependency: - -- Unavailable: js python2 -- Applications: perf_tests apps -- documentation: NO -- Non-free algorithms: NO -- Java: -- ant: /bin/ant (ver 1.10.7) -- JNI: /usr/local/jdk8/jdk1.8.0_291/include /usr/local/jdk8/jdk1.8.0_291/include/linux /usr/local/jdk8/jdk1.8.0_291/include -- Java wrappers: YES -- Java tests: NO -- -- Install to: /usr/local/lib
- 接下来执行make进行编译即可
make -j8 & make
- 编译成功后,对应的opencv-401.jar和共享库libopencv_java401.so即可在build目录下的 bin/ 和 lib/ 下找到,将其复制到/usr/local/lib下即可在java中使用opencv-401.jar包中的方法载入



