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文件,实现对应函数(工程属性中需包含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; }
编译生成对应的dll
4. 执行java程序
将生成dll复制到java工程src文件夹下,java XX 运行程序
以上这篇java通过jni调用opencv处理图像的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
@subpage tutorial_py_colorspaces_cn 学习如何将图像从一个颜色空间变换到另外一个。 另外,我们还将学习在一段视频中追踪一个有颜色的物体。 @subpage tutorial_py_geometric_transformations_cn 学习对图像进行不同的几何变换,像旋转、平移等等。 @subpage tutorial_py_thresholding_cn 学习
本文向大家介绍Python OpenCV处理图像之图像直方图和反向投影,包括了Python OpenCV处理图像之图像直方图和反向投影的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python OpenCV图像直方图和反向投影的具体代码,供大家参考,具体内容如下 当我们想比较两张图片相似度的时候,可以使用这一节提到的技术 直方图对比 反向投影 关于这两种技术的原理可以参考我上面贴的
我的目标是从内核向运行在接收到这个信号userspace.On的Android服务发送一个信号,该服务应该向内核发出一个IOCTL调用。通过这个ioctl调用从内核获取数据后,它必须显示给用户。为此,我从我的Java服务调用一个本机方法,它注册了sigaction结构,其中包括该信号的处理函数。这个处理函数将进行IOCTL调用并调用一个Java函数将字符串传递给Java服务。 这里是signal.
本文向大家介绍Python OpenCV处理图像之图像像素点操作,包括了Python OpenCV处理图像之图像像素点操作的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python OpenCV图像像素点操作的具体代码,供大家参考,具体内容如下 0x01. 像素 有两种直接操作图片像素点的方法: 第一种办法就是将一张图片看成一个多维的list,例如对于一张图片im,想要操作第四行第
问题内容: 我正在尝试使用本机实现重写活动回调方法(以将Lua挂接到活动中)。但是我遇到了一个麻烦,试图在JNI代码中调用超类方法,这是回调所必需的。 例如,我有一个像这样的课程: 我正在尝试在C中这样实现: 但是,当我尝试此代码时,在自身而不是中调用,产生此错误: 我以为jmethodID是特定于类的,并且可以标识super方法,但是事实并非如此。 所以我的问题是,您如何实现这一目标… 在JNI
我正在尝试使用OpenCV的缝合算法缝合从OpenMV H7相机拍摄的一些图像。我遇到了无法写入或读取这些图像的问题,这让我觉得存在一些兼容性问题。 更确切地说,我在使用方法(cv2.imwrite)本身时得到了这个错误: 我一直在想,也许有一种方法可以将图像转换为NumPy数组以使其兼容,但我不太确定。 有什么建议吗?