`

JavaCV部署到web服务器上 Javacv linux 环境配置

阅读更多

JavaCV是java实现的调用openCV的接口,本身opencv就可以支持Windows,Linux和Mac OS,Javacv可以将OpenCV的功能放到Android系统上调用,处理设备的图形图像和视频等

关于javacv 在Windows、Android系统的配置,可以参考:http://blog.csdn.net/victory06057231/article/details/8026188 这篇文章来做。

在Java的Web服务器上配置JavaCV的环境,没有介绍。

JavaCV的依赖是:

 

<dependency>
         <groupId>com.googlecode.javacv</groupId>
         <artifactId>javacv</artifactId>
         <version>0.1</version>
      </dependency>

 下载下来有7个jar包,其中带系统和机型后缀的jar包里面都是OpenCV的配置文件,在带linux后缀的jar包中是C编译的.so文件,解压之后就可以看到

 

 

javacv-0.1.jar
javacv-0.1-macosx-x86_64.jar
javacv-0.1-linux-x86_64.jar
javacv-0.1-linux-x86.jar
javacv-0.1-windows-x86.jar
javacv-0.1-windows-x86_64.jar

这个.so文件,要Linux环境配置是要配置到指定目录下面的,开始以为定义环境变量就可以了,但是直到看到javacv-0.1.jar的源码(反编译得来的),才发现所有的配置目录都是写死了的

 

public class opencv_core
{
  public static final String genericIncludepath = "/opt/local/include/";
  public static final String genericLinkpath = "/opt/local/lib/:/opt/local/lib64/:/usr/local/lib/:/usr/local/lib64/";
  public static final String windowsIncludepath = "C:/opencv/build/include/";
  public static final String windowsx86Linkpath = "C:/opencv/build/x86/vc10/lib/";
  public static final String windowsx86Preloadpath = "C:/opencv/build/x86/vc10/bin/;C:/opencv/build/common/tbb/ia32/vc10/";
  public static final String windowsx64Linkpath = "C:/opencv/build/x64/vc10/lib/";
  public static final String windowsx64Preloadpath = "C:/opencv/build/x64/vc10/bin/;C:/opencv/build/common/tbb/intel64/vc10/";
  public static final String androidIncludepath = "../include/";
  public static final String androidLinkpath = "../lib/";

 

@Properties({@com.googlecode.javacpp.annotation.Platform(includepath={"/opt/local/include/"}, linkpath={"/opt/local/lib/:/opt/local/lib64/:/usr/local/lib/:/usr/local/lib64/"}, include={"<opencv2/calib3d/calib3d.hpp>", "opencv_adapters.h"}, link={"opencv_calib3d@.2.4", "opencv_features2d@.2.4", "opencv_flann@.2.4", "opencv_highgui@.2.4", "opencv_imgproc@.2.4", "opencv_core@.2.4"}), @com.googlecode.javacpp.annotation.Platform(value={"windows"}, includepath={"C:/opencv/build/include/"}, link={"opencv_calib3d240", "opencv_features2d240", "opencv_flann240", "opencv_highgui240", "opencv_imgproc240", "opencv_core240"}), @com.googlecode.javacpp.annotation.Platform(value={"windows-x86"}, linkpath={"C:/opencv/build/x86/vc10/lib/"}, preloadpath={"C:/opencv/build/x86/vc10/bin/;C:/opencv/build/common/tbb/ia32/vc10/"}), @com.googlecode.javacpp.annotation.Platform(value={"windows-x86_64"}, linkpath={"C:/opencv/build/x64/vc10/lib/"}, preloadpath={"C:/opencv/build/x64/vc10/bin/;C:/opencv/build/common/tbb/intel64/vc10/"}), @com.googlecode.javacpp.annotation.Platform(value={"android"}, includepath={"../include/"}, linkpath={"../lib/"})})
public class opencv_calib3d
{

 

也就是必须按照源码的配置,javacv才会读OpenCV的动态链接库。

对于我的linux服务器是Linux86_64位的8核机,将javacv-0.1-windows-x86_64.jar的解压的.so文件放到/usr/local/lib64/或者/opt/local/lib64/目录下面就可以了。

 

如果没有找到配置文件,会在应用服务器的临时文件夹解压文件,解压不成功找不到文件,就抛这个异常

  ERROR com.alibaba.citrus.turbine.pipeline.valve.HandleExceptionValve - Failed to process request /auto/imageCompare.do, the root cause was UnsatisfiedLinkError: /home/admin/wtp/.default/temp/javacpp33861831521035698/libjniopencv_core.so: libopencv_core.so.2.4: 无法打开共享对象文件: 没有那个文件或目录

java.lang.UnsatisfiedLinkError: /home/admin/wtp/.default/temp/javacpp33861831521035698/libjniopencv_core.so: libopencv_core.so.2.4: 无法打开共享对象文件: 没有那个文件>

或目录

        at java.lang.ClassLoader$NativeLibrary.load(Native Method) ~[na:1.6.0_32]

        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1807) ~[na:1.6.0_32]

        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703) ~[na:1.6.0_32]

        at java.lang.Runtime.load0(Runtime.java:770) ~[na:1.6.0_32]

 

        at java.lang.System.load(System.java:1003) ~[na:1.6.0_32]

 

分享到:
评论

相关推荐

    java开源包11

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包9

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包5

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包101

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包8

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包1

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包2

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包7

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Java资源包01

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

Global site tag (gtag.js) - Google Analytics