java通過jni調(diào)用opencv處理圖像的方法
1. 建立java文件
public class getImageFeature { static{ System.loadLibrary("getImageFeatureDll"); } public native int getImageFeatureByName(String filename); public native int getImageFeatureByMemory(); public static void main(String[] args) { getImageFeature test=new getImageFeature(); String filename = "D:/testpic/6af1399a64d10a399ad3247c01656bb7.jpg"; System.out.println(test.getImageFeatureByName(filename)); } }
2. 切換到工程src文件夾
javac getImageFeature.java
javah getImageFeature
生成 getImageFeature.h 文件
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class getImageFeature */ #ifndef _Included_getImageFeature #define _Included_getImageFeature #ifdef __cplusplus extern "C" { #endif /* * Class: getImageFeature * Method: getImageFeatureByName * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_getImageFeature_getImageFeatureByName (JNIEnv *, jobject, jstring); /* * Class: getImageFeature * Method: getImageFeatureByMemory * Signature: ()I */ JNIEXPORT jint JNICALL Java_getImageFeature_getImageFeatureByMemory (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif
3. VS2013建立dll工程
添加getImageFeature.h 頭文件,再添加getImageFeature.cpp文件,實現(xiàn)對應(yīng)函數(shù)(工程屬性中需包含jdk下的include目錄)
C:\Program Files\Java\jdk1.8.0_20\include
C:\Program Files\Java\jdk1.8.0_20\include\win32
#include "getImageFeatureDll.h" #include <opencv2/opencv.hpp> /* * Class: getImageFeature * Method: getImageFeatureByName * Signature: (Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_getImageFeature_getImageFeatureByName (JNIEnv *env, jobject obj, jstring filename) { const char *str_filename; str_filename = env->GetStringUTFChars(filename, false); cv::Mat image = cv::imread(str_filename); cv::imshow("test", image); cv::waitKey(20000); return 0; } /* * Class: getImageFeature * Method: getImageFeatureByMemory * Signature: ()I */ JNIEXPORT jint JNICALL Java_getImageFeature_getImageFeatureByMemory (JNIEnv *, jobject) { return 0; }
編譯生成對應(yīng)的dll
4. 執(zhí)行java程序
將生成dll復(fù)制到j(luò)ava工程src文件夾下,java XX 運(yùn)行程序
以上這篇java通過jni調(diào)用opencv處理圖像的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Java通過JNI 調(diào)用動態(tài)鏈接庫DLL操作
- Java通過調(diào)用C/C++實現(xiàn)的DLL動態(tài)庫——JNI的方法
- JNI實現(xiàn)最簡單的JAVA調(diào)用C/C++代碼
- JAVA JNI原理詳細(xì)介紹及簡單實例代碼
- JAVA JNI函數(shù)的注冊過程詳細(xì)介紹
- Java的JNI快速入門教程(推薦)
- 從源碼編譯Android系統(tǒng)的Java類庫和JNI動態(tài)庫的方法
- 解析Java的JNI編程中的對象引用與內(nèi)存泄漏問題
- java jni調(diào)用c函數(shù)實例分享(java調(diào)用c函數(shù))
- 詳解JNI到底是什么
相關(guān)文章
Spring下token過期時間分平臺(web和app)設(shè)置方法
本文詳細(xì)介紹了在Spring環(huán)境下,針對web端和APP端實現(xiàn)不同token過期時間的方法,通過整合SpringBoot、springSecurity和JWT框架,文章講解了登錄流程、JWT的基本組成以及token鑒權(quán)的核心步驟,需要的朋友可以參考下2024-10-10零基礎(chǔ)入門學(xué)習(xí)——Spring Boot注解(一)
這篇文章主要介紹了Spring Boot注解學(xué)習(xí)(一)要點,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-05-05java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解
這篇文章主要介紹了java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解,需要的朋友可以參考下2020-02-02IDEA 插件 mapper和xml互相跳轉(zhuǎn)操作
這篇文章主要介紹了IDEA 插件 mapper和xml互相跳轉(zhuǎn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02