Idea JNI opencv例子

idea新建一个java application项目

配置:

idea导入opencv jar包:
①file->Project Structure
在这里插入图片描述
在这里插入图片描述
②点击+,选择opencv jar包即可

代码实现

src目录下新建package com.jni.test,新建classHelloJNI和call
在这里插入图片描述

HelloJNI内容:

package com.jni.test;

public class HelloJNI {

    public native static int Test(long imagePtr);

}

通过编译,生成相应的class文件
在这里插入图片描述
通过javah生成c++的.h头文件
通过windows命令行,到src目录下,运行

javah com.jni.test.HelloJNI

得到头文件com_jni_test_HelloJNI.h,内容:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jni_test_HelloJNI */

#ifndef _Included_com_jni_test_HelloJNI
#define _Included_com_jni_test_HelloJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_jni_test_HelloJNI
 * Method:    TruckStatusTest
 * Signature: (JJ[I)I
 */
JNIEXPORT jint JNICALL Java_com_jni_test_HelloJNI_Test
  (JNIEnv *, jclass, jlong);

#ifdef __cplusplus
}
#endif
#endif

然后新建cpp,实现相应的函数,内容:

#include "com_jni_test_HelloJNI.h"
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
JNIEXPORT jint JNICALL Java_com_jni_test_HelloJNI_Test(JNIEnv *env, jobject aThis,  jlong imagePtr)
{
	cv::Mat& image = *(cv::Mat*)imagePtr;
	cv::imwrite("test.png", image);
}

利用VS新建test工程,然后生成相应的动态链接库,然后将test.dll放在工程目录下

最后通过类call调用进行,内容:

package com.jni.test;


import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.dnn.*;
public class call {
    static {
        System.loadLibrary("opencv_java400");
         System.loadLibrary("test");
    }
    public static void main(String[] args) {
        Mat mat = Imgcodecs.imread("D:\\code\\JAVA\\JNI_test\\1.jpg");
        HelloJNI hjni = new HelloJNI();
        System.out.println(hjni.TruckStatusTest(mat.getNativeObjAddr()));
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值