java通过jni调用opencv处理图像的方法
1.建立java文件
publicclassgetImageFeature{ static{ System.loadLibrary("getImageFeatureDll"); } publicnativeintgetImageFeatureByName(Stringfilename); publicnativeintgetImageFeatureByMemory(); publicstaticvoidmain(String[]args){ getImageFeaturetest=newgetImageFeature(); Stringfilename="D:/testpic/6af1399a64d10a399ad3247c01656bb7.jpg"; System.out.println(test.getImageFeatureByName(filename)); } }
2.切换到工程src文件夹
javacgetImageFeature.java
javahgetImageFeature
生成getImageFeature.h文件
/*DONOTEDITTHISFILE-itismachinegenerated*/ #include/*HeaderforclassgetImageFeature*/ #ifndef_Included_getImageFeature #define_Included_getImageFeature #ifdef__cplusplus extern"C"{ #endif /* *Class:getImageFeature *Method:getImageFeatureByName *Signature:(Ljava/lang/String;)I */ JNIEXPORTjintJNICALLJava_getImageFeature_getImageFeatureByName (JNIEnv*,jobject,jstring); /* *Class:getImageFeature *Method:getImageFeatureByMemory *Signature:()I */ JNIEXPORTjintJNICALLJava_getImageFeature_getImageFeatureByMemory (JNIEnv*,jobject); #ifdef__cplusplus } #endif #endif
3.VS2013建立dll工程
添加getImageFeature.h头文件,再添加getImageFeature.cpp文件,实现对应函数(工程属性中需包含jdk下的include目录)
C:\ProgramFiles\Java\jdk1.8.0_20\include
C:\ProgramFiles\Java\jdk1.8.0_20\include\win32
#include"getImageFeatureDll.h" #include/* *Class:getImageFeature *Method:getImageFeatureByName *Signature:(Ljava/lang/String;)I */ JNIEXPORTjintJNICALLJava_getImageFeature_getImageFeatureByName (JNIEnv*env,jobjectobj,jstringfilename) { constchar*str_filename; str_filename=env->GetStringUTFChars(filename,false); cv::Matimage=cv::imread(str_filename); cv::imshow("test",image); cv::waitKey(20000); return0; } /* *Class:getImageFeature *Method:getImageFeatureByMemory *Signature:()I */ JNIEXPORTjintJNICALLJava_getImageFeature_getImageFeatureByMemory (JNIEnv*,jobject) { return0; }
编译生成对应的dll
4.执行java程序
将生成dll复制到java工程src文件夹下,javaXX运行程序
以上这篇java通过jni调用opencv处理图像的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。