Centos8 下编译使用opencv4.5.5 生成.jar与so
1,环境准备
yum install epel-release git gcc gcc-c++ cmake3 qt5-qtbase-devel python python-devel python-pip cmake python-devel numpy python34-numpy gtk2-devel libpng-devel jasper-devel openexr-devel libwebp-devel libjpeg-turbo-devel libtiff-devel libdc1394-devel tbb-devel eigen3-devel gstreamer-plugins-base-devel freeglut-devel mesa-libGL mesa-libGL-devel boost boost-thread boost-devel libv4l-devel -y
或者
dnf install epel-release git gcc gcc-c++ cmake3 qt5-qtbase-devel \
python3 python3-devel python3-pip cmake python3-devel python3-numpy \
gtk2-devel libpng-devel jasper-devel openexr-devel libwebp-devel \
libjpeg-turbo-devel libtiff-devel tbb-devel libv4l-devel \
eigen3-devel freeglut-devel mesa-libGL mesa-libGL-devel \
boost boost-thread boost-devel gstreamer1-plugins-base
如果有找不到的源
可以采用以下命令先找到包
yum search python | grep -i devel
然后安装
yum install -y zip
这里要提为什么要装ant,因为调jni的SDK的jar包是通过ant编译的。。。。。
yum -y install ant
2、下载源码文件
opencv_contrib-4.5.5.zip opencv-4.5.5.zip
3、开始编译
解压到一个指定目录中。
cd opencv-4.5.5
mkdir build && cd build
我看别的都是 用于C++
cmake3 -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=/www/opencv_contrib-4.5.5/modules -D BUILD_TESTS=OFF -D BUILD_EXAMPLES=ON ..
我自己修改成如下:可以生成.jar与so
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/www/opencv_contrib-4.5.5/modules -D BUILD_SHARED_LIBS=OFF -D BUILD_TESTS=OFF -D OPENCV_GENERATE_PKGCONFIG=ON ..
make -j2 这里是使用几核编译 。不知道的可以先查询 nproc
make install
重要参数说明
-D CMAKE_BUILD_TYPE=RELEASE 编译发布版本
-D CMAKE_INSTALL_PREFIX=/usr/local 编译后的安装主目录
-D OPENCV_GENERATE_PKGCONFIG=ON 这个是为了C++引用的,可以忽略
-D OPENCV_EXTRA_MODULES_PATH=/home/XX/opencv_contrib-4.x/modules 这个就是附加模块路径
-D ENABLE_CXX11=ON C++版本支持
-D WITH_1394=OFF 这个好像要加些依赖,关掉。不关也没关系
-D BUILD_opencv_xfeatures2d=OFF 这里要重点说一下,在附件模块opencv_contrib-4.x/modules里面有很多目录,如果有些你不想要就关掉。比如xfeatures2d这个就导致我编译不过,我又不用,直接关掉。
-D BUILD_SHARED_LIBS=OFF 这个重点说,就是让依赖库变成一个SO而不是很多SO。这个SO就是java的jni要用的。
-D BUILD_TESTS=OFF 关掉测试,提高编译效率,减少时间。编译太长时间了。。。。。
.. 后面两个点是编译上级目录的
————————————————
命令执行后会生成make文件等,这里的输出一定一定一定要关注
生成.jar 一定要有JDK与ANT
通过 find ./ -name opencv4.pc
是否安装成功:
opencv_version
或
python3 -c "import cv2; print(cv2.__version__)"
最后:so在opencv-4.5.5/build/lib下面
.jar 在 opencv-4.5.5/build/bin
opencv4.pc 在opencv-4.5.5/build/unix-install