Centos6.5安装opencv并生成opencv-java

前言


一开始使用的opencv版本是opencv3.0.0,操作系统是centos7.0,编译安装都没问题,但在centos6.5下编译安装opencv3.0.0时,编译时出错,更换成opencv2.4.13,编译安装成功。因为要使用java开发,因此要编译生成opencv-java模块。官网也给出了相应的介绍,但在编译过程中,会出错,本文给出了centos6.5下编译安装opencv并生成opencv-java模块的教程。官网介绍链接为:Introduction to Java development

安装步骤


1、安装依赖包,使用yum指令
yum install cmake
yum install python
yum install gcc
yum groupinstall "Development Tools"
最后一个相当于Ubuntu操作系统下的build essential。centos里一般都有gcc和python,再次使用yum install可以安装一些devel类库。如果是使用centos桌面版,因为系统已经包含图像和图形的类库,执行完以上命令,即可进行编译安装,如果是centos服务器版,因为缺少图像和图形处理的类库,有可能需要用到以下的类库:
yum install 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 libtool 
nasm
届时可根据具体情况安装。
2、下载opencv2.4.13
去官网下载opencv2.4.13,链接为点击打开链接。
如果是在Windows下进行Java开发,下载完后,在build/java目录下的可以找到opencv-2413.jar,以及对应架构的dll库,这个库已经把所有opencv的库都编译到其中了,相当于Linux的静态库。因此java开发过程中,只需要在jvm中加载该dll库即可。
在centos下进行Java开发时,要明确,是需要编译安装静态库和动态库,安装opencv-java需要安装ant。
yum install ant
3、新建build目录
cd ~/opencv2.4.13
mkdir build
cd build
4、安装opencv
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
cmake生成对应的编译参数,大致意思是该版本是发行版,将生成的动态库即.so文件放到/usr/local、目录下,具体是在/usr/local/lib目录和/usr/local/share等目录都有opencv的相关信息。
opencv安装完成,可以使用c++进行开发了。
5、安装opencv-java(动态库)
如果是要生成动态库,可以执行以下命令
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTS=OFF ..
make
sudo make install
 
   
 
   -DBUILD_TEST=OFF是需要的,官网文档中没有,查资料说是opencv的一个bug。上述操作完成后,在build的bin目录下生成了opencv-2413.jar,在lib目录下生成了libopencv_java2413.so文件。但是使用du -h看一下libopencv_java2413.so的大小,不到1M,因为上述命令执行后,生成的都是动态库,libopencv_java2413.so还要依赖lib目录下的其他动态库,在使用opencv-2413.jar时,jar包中方法通过JNI接口去 
   libopencv_java2413.so中调用,libopencv_java2413.so再通过链接器ldd去加载其他依赖的动态库。因此如果你要将这个opencv-java部署到web服务器中,你是需要将lib目录下的这一堆库全都放到ldd默认的链接目录中,也可以自己在LD_LIBRARY_PATH中设置。 
  
你可能会说我执行上述命令后,在Eclipse里开发,只加载libopencv_java2413.so就行了啊。那是因为你使用了cmake的编译参数CMAKE_INSTALL_PREFIX=/usr/local,opencv的动态库文件就都放到/ust/local/lib目录下了,而这个目录是ldd会自动去找的一个目录。
怎样才能像Windows那样只加载一个dll文件就行了?那就需要编译静态库了。
6、安装opencv-java(静态库)
编译安装静态库,只需要在cmake添加一个参数,添加后we
cmake -D CMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF ..
make
sudo make install
添加-DBUILD_SHARED_LIBS=OFF参数后,执行完上述指令,打开build/lib,里面除了libopencv_java2413.so外,均为.a文件即静态库。libopencv_java2413.so的大小为17M左右,跟Windows下的dll库差不多。此时libopencv_java2413.so库中不需要再去加载其他依赖的opencv的动态库,因为这些库已经都包含在其中。直接用该库进行开发即可。

小结


本文详细介绍了编译安装opencv-java的步骤,以及其动态库和静态库的区别,考虑到在服务器上部署的方便,建议使用静态库。




你可能感兴趣的:(Java,图像与视频)