前言
之前使用opencv实现了获取湖泊轮廓,在打包到线上服务器时出现了问题.本来打算自己写一套不使用opencv的代码,但是效果不理想.无奈还是只能继续寻找使用opencv的解决方案.在过程中发现服务器使用了docker普通的安装不起作用.最终只能使用这版解决方案,为避免下次踩坑,写下这篇博文留给有缘人
准备工作
1.创建一个文件夹存放下载下来的cmake(版本要在3.25以上)及opencv的安装包
2.一个可以使用的dockerhub账号或安装harbor私有镜像仓库
mkdir /chen/zip
首先编写一个Dockerfile文件,如下
FROM openjdk:8
COPY ./zip /chen/zip
开始制作
进入文件所在文件夹以进入容器内部的方式运行
#docker run -it --entrypoint=/bin/bash 名称自定义:版本自定义 .
docker run -it --entrypoint=/bin/bash openj8:1 .
此步骤只要您的java服务不是使用容器运行的不在容器内部也可使用
进入/chen/zip文件夹,可以看到之前放在容器外部的opencv及cmake的安装包(如果没有请查看Dockerfile 里的COPY ./zip /chen/zip路径是否正确)
cd /chen/zip
ls
安装cmake编译安装所需环境
sudo apt update
#gcc编译器
sudo apt install build-essential
#openssl
sudo apt install libssl-dev
安装cmake
#解压文件
tar -zxvf cmake-3.29.0-rc3.tar.gz
#进入文件夹
cd cmake-3.29.0-rc3
#预编译
./bootstrap
#编译(-j4的数字可以修改为任意数组,根据你的服务器性能自己定义)
make -j4
#安装
make install
#查看版本信息
cmake --version
安装opencv
#安装编译安装opencv的运行环境
apt update
apt install build-essential cmake libgtk2.0-dev pkg-config
apt install libavcodec-dev libavformat-dev libswscale-dev
apt install libv4l-dev libxvidcore-dev libx264-dev
apt install libjpeg-dev libpng-dev libtiff-dev
apt install libeigen3-dev libtbb-dev libdc1394-22-dev
#必须安装,不安装无法生成java所需要的文件
apt install ant
#进入opencv安装包所在文件夹
cd /chen/zip
#解压文件
tar -zxvf opencv-4.6.0.tar.gz
#进入文件夹
cd opencv-4.6.0
#创建build文件并进入
mkdir build && cd build
#生成可执行文件
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
执行完成后如下 (俩个java不为yes就是存在问题,检查javac是否可以使用,ant -version是否正常)
继续安装
#编译(同安装cmake)
make -j4
#安装
make install
#查看版本
opencv_version
#复制so文件到指定路径
cp /usr/local/share/java/opencv4/libopencv_java460.so /usr/lib/
#退出容器
exit
提交镜像
#找到你编辑的容器id
docker ps -a
#提交镜像到本地(docker commit 你的容器id openj8:2)
docker commit 5291f55987f0 openj8:4.6.0
#登陆你的dockerhub账号
docker login -u xx -p xx xx-docker.pkg.coding.net
#推送镜像
docker push openj8:4.6.0
修改你的java服务dockerfile引用openjdk8环境为你制作的镜像运行即可
标签:cmake,apt,opencv,jdk8,dev,install,镜像,docker From: https://blog.csdn.net/weixin_49180783/article/details/136802546