Java服务器部署基于OpenCV的C++图像处理项目(一)

Java服务器部署基于OpenCV的C++图像处理项目(一)

由于最近项目需要在后台处理图片并返回结果给移动端,所以折腾了一周如何将c++代码和opencv打包并部署到java服务器中供后台调用,这里记录下详细过程。

基础环境

服务器环境
阿里云服务器 Red Hat 4.4.7-16 x86_64
java version “1.8.0_171”

开发环境
(将需要的库编译好之后传到服务器上,不要在服务器上编译,环境太老就换服务器环境吧)

VM虚拟机 + CentOS-7-x86_64-Everything-1804 Red Hat 4.8.5-28 (centos下载:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1804.iso )
java version “1.8.0_191”
IDE:ideaIU-2018.2.5 (IntelliJ IDEA 激活注册 破解版安装及配置:https://blog.csdn.net/sinat_27741463/article/details/89096000)
cmake version 2.8.12.2
gcc 版本 4.8.5 20150623

环境配置

在centos中需要配置java开发环境及c++编译环境。全程使用root用户

1.jdk安装 (服务器和开发环境都需要)

centos安装后可能会自带OpenJDK,先删除再安装想要的版本。
删除可参考:https://www.cnblogs.com/winner-0715/p/5154326.html
安装可参考:http://www.cnblogs.com/xqzt/p/4934451.html

2.IDEA安装 (开发需要)

参考:https://blog.csdn.net/shengshengshiwo/article/details/79599761 按照步骤来,注意其中最后一步在hots中添加key验证地址。由于不同版本IDEA的key验证窗口可能弹出时间不同,影响不大,弹出后添加key即可。
破解地址:http://idea.lanyus.com

开发springboot项目时,springboot自带tomcat容器,不需要另外安装tomcat
而其他web项目开发还需要tomcat环境,下载tomcat解压到自定义目录即可:
tomcat8下载地址:https://tomcat.apache.org/download-80.cgi
解压,无需其他操作:

tar -zxvf apache-tomcat-8.5.29.tar.gz -C /usr/tomcat

IDEA创建非springboot项目并配置tomcat:
参考:https://www.cnblogs.com/soundcode/p/6485686.html
Java服务器部署基于OpenCV的C++图像处理项目(一)_第1张图片

3.cmake安装 (开发需要)

直接执行命令

yum install cmake

同时可查看系统gcc版本,如未安装可直接yum安装

yum install gcc
gcc -v

3.1 一些编译依赖

ant yum install ant这个也要装,不然jar包生成不了
dot yum install graphvizgraphviz中包含dot
zlib 需要自行下载安装,之后工程运行会依赖这个库。下载安装方法:https://yq.aliyun.com/ziliao/454311 ,这个题主使用的是 get http://zlib.net/zlib-1.2.8.tar.gz ,这个版本我没找到。我在centos下使用 wget http://zlib.net/zlib-1.2.11.tar.gz,后安装步骤就和这个题主一样了。
以上依赖安装参考:https://blog.csdn.net/S_gy_Zetrov/article/details/80993533 。链接里是mac安装步骤,但是centos安装同理。
ffmpeg (可选) 支持opencv的一些音视频处理 (在mac下安装较方便,但是centos下版本过老,需自己下载安装,参考: https://www.cnblogs.com/subo_peng/p/6732826.html )

4.opencv安装 (开发需要)

下载地址:https://opencv.org/releases.html ,我这里下载的版本是 3.4.1。
参考:https://blog.csdn.net/u013685902/article/details/78695094 。其中安装之前的编译命令教程中使用:cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/software/opencv .. ,其中CMAKE_INSTALL_PREFIX表示安装目录,可以安装在自定义目录,我这里在根目录下创建 /app/opencv 目录用于安装,安装命令:cmake -D CMAKE_INSTALL_PREFIX=/app/opencv .. ,也可直接安装在系统默认目录,命令简化为:cmake .. 然后接下来按照参考网址操作就完事了。
安装完成后可以在/app/opencv 下看到4个目录,否则可能安装的有问题,这里面的一些文件在后面编译会用到:
Java服务器部署基于OpenCV的C++图像处理项目(一)_第2张图片

编译opencv使用make时可能出现问题,需升级gcc:
cc1plus: 警告:命令行选项“-Wstrict-prototypes”对 Ada/C/ObjC 是有效的,但对 C++ 无效

升级gcc

虚拟机直接安装CentOS7就不需要升级gcc,不然问题太多,麻烦的一批。如果有升级gcc需要,下面步骤仍可参考。

原因是cmake或者gcc版本过低,可查看cmake版本是否合适。而gcc在centos下版本过老,需自己下载安装,我这里下载gcc-4.8.5:

 wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.5/gcc-4.8.5.tar.gz

同时升级gdb,gdb安装和gcc升级可参考:https://www.cnblogs.com/highway-9/p/5628852.html 。
gcc,make,cmake的关系可参考:https://blog.csdn.net/libaineu2004/article/details/77119908 。
安装好之后再make可能会出现:cc1plus: 警告:无法识别的命令行选项“-Wno-tautological-undefined-compare” 之类的错误,原因是新版老版同时存在,系统仍然使用的老版gcc。解决方法:https://blog.csdn.net/lhh1113/article/details/64441802?locationNum=8&fps=1 。复制以下命令直接运行即可,其作用是备份老版gcc并激活新版:

mv /usr/bin/gcc /usr/bin/gcc4.4.7
ln -s /usr/local/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++4.4.7
ln -s /usr/local/bin/g++ /usr/bin/g++
mv /usr/bin/cc /usr/bin/cc4.4.7
ln -s /usr/local/bin/cc /usr/bin/cc
mv /usr/bin/c++ /usr/bin/c++4.4.7
ln -s /usr/local/bin/c++ /usr/bin/c++

之后重启系统,我在重启系统之后遇到了系统保护问题,由于更改核心库,硬盘被挂载为只读。操作文件会提示 ***只读的文件系统 。使用命令 mount -o remount,rw / 重新挂载硬盘。

删除opencv的build目录,重新创建build,重新安装cmake并重复上方编译步骤,否则直接继续make,可能出现很多错误:
/usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.21' not found,解决方法参考:https://blog.csdn.net/shine_journey/article/details/62039381
make[1]: *** 正在等待未完成的任务....SyntaxError: invalid syntax make[2]: *** [CMakeFiles/dephelper/gen_opencv_java_source] 错误 1
CMake Error: your C compiler: "/usr/bin/cc" was not found. Please set CMAKE_C_COMPILER to a valid compiler path or name. 等莫名其妙的错误。

我在阿里云服务器上经过上述步骤升级完gcc之后,编译opencv还是遇到了很多问题,然后我直接在我的开发环境中编译opencv并安装,然后将安装目录传到了服务器上,这样程序部署之后也是可以运行的。详细方法如下。
opencv配置到服务器

在开发环境中编译安装好opencv之后(我的安装目录是 /app/opencv),直接将安装目录压缩上传。操作方法如下:
在这里插入图片描述
在这里插入图片描述

tar zcvf opencv.tar.gz opencv
scp /app/opencv.tar.gz root@api.**你的域名**.com:/app 

然后在服务器/app目录直接解压即可 tar -zxvf opencv.tar.gz

至此已完成基础环境配置,编译和打包在下一篇中详细讲解。

你可能感兴趣的:(服务器,opencv)