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差不多了
又包含vc12 和vc11版,,如果只要一个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