Atitit 图像处理 调用opencv 通过java api attilax总结

来源:互联网 发布:亿晟软件技术有限公司 编辑:程序博客网 时间:2024/06/05 03:56


Atitit 图像处理 调用opencv 通过java  api   attilax总结

 

1.1. Opencv java api的支持opencv2.4.2 就有了对java api的支持1

1.2. 安装2016-05-19  opencv v2.4.13   267M  ,一个压缩包解压即可1

1.3. Opencv d java接口api  ,把opencv-2413.jar加入java项目1

1.4. /AtiPlatf_ee/src/com/attilax/img/SfitTest.java提取sfit特征2

2. Qa3

2.1.  java.lang.UnsatisfiedLinkError: Directory separator should not appear in library name: D:\tsclib.dll3

2.2. System.loadLibrary   Native.loadLibrary区别3

2.3. 参考资料http://www.cnblogs.com/muyuge/

 

 

1.1. Opencv java api的支持opencv2.4.2 就有了对java api的支持

2012-07-04 opencv2.4.2就有了对java api的支持

虽说以前可以使用jna调用dll但是比较麻烦。数据类型可能对应不上。。使用python调用dll也是可以的。

有了全新的java api支持那就最好不过了。

1.2. 安装2016-05-19  opencv v2.4.13   267M  ,一个压缩包解压即可

解压以后2.7g  包含64位和x86,如果只要64位,则1.5g差不多了

又包含vc12vc11版,,如果只要一个vc12,则600M体积就可以了。。

C:\progrm\opencv\build\x64\vc12

 

 

1.3. Opencv d java接口api  ,把opencv-2413.jar加入java项目

 

C:\progrm\opencv\build\java

opencv-2413.jar

opencv_java2413.dll

 

 

 

 

1.4. /AtiPlatf_ee/src/com/attilax/img/SfitTest.java提取sfit特征

package com.attilax.img;

 

import org.opencv.core.Core;

import org.opencv.core.Mat;

import org.opencv.core.MatOfKeyPoint;

import org.opencv.highgui.Highgui;

import org.opencv.features2d.*;

 

public class SfitTest {

 

/**

 * ret  

 * 128

 1589

 * @param args

 */

public static void main(String[] args) {

 

 //opencv_java2413  Core.NATIVE_LIBRARY_NAME

    System.load( "C:\\progrm\\opencv\\build\\java\\x64\\opencv_java2413.dll" );

    Mat test_mat = Highgui.imread("C:\\000sklt\\2.jpg");

    Mat desc = new Mat();

    FeatureDetector fd = FeatureDetector.create(FeatureDetector.SIFT);

    MatOfKeyPoint mkp =new MatOfKeyPoint();

    fd.detect(test_mat, mkp);

    DescriptorExtractor de = DescriptorExtractor.create(DescriptorExtractor.SIFT);

    de.compute(test_mat,mkp,desc );//提取sift特征

    System.out.println(desc.cols());

    System.out.println(desc.rows());

 

 

 

}

 

}

 

 

 

2. Qa

2.1.  java.lang.UnsatisfiedLinkError: Directory separator should not appear in library name: D:\tsclib.dll

 

说明loadLibrary不支持路径。




     System.loadLibrary("tsclib.dll");
修改成
     System.load("D:/tsclib.dll");

 

2.2. System.loadLibrary   Native.loadLibrary区别

一中是用JNA方法,另外是用JNative方法,两种都是转载来的,

Native.loadLibrary(DLLPATH, DM.class); 需要实现一个接口

 

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java2413 in java.library.path

at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)

at java.lang.Runtime.loadLibrary0(Runtime.java:870)

at java.lang.System.loadLibrary(System.java:1122)

at com.attilax.img.SfitTest.main(SfitTest.java:15


 

 

 

0 0
原创粉丝点击