Centos8 下编译使用opencv4.5.5 生成.jar与so

发布时间 2023-06-02 13:56:04作者: jamin

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