Matを受け取って修正したネイティブメソッドを作成する方法を理解できません。jniとOpenCVで作成されたlibで未定義のシンボル
私は、このJavaクラスのコードがあります。
private native void getCanny(long mat);
getCanny(mat.getNativeObjAddr());
とMat2Image.hを生成:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Mat2Image */
#ifndef _Included_Mat2Image
#define _Included_Mat2Image
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Mat2Image
* Method: getCanny
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_Mat2Image_getCanny
(JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
#endif
#endif
、これは私が作ったの.cppです:
#include "Mat2Image.h"
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc.hpp>
JNIEXPORT void JNICALL Java_Mat2Image_getCanny
(JNIEnv * env, jobject obj, jlong matr){
cv::Mat* frame=(cv::Mat*)matr;
cv::cvtColor(*frame, *frame, CV_BGR2GRAY);
cv::GaussianBlur(*frame, *frame, cv::Size(7,7), 1.5, 1.5);
cv::Canny(*frame, *frame, 0, 30, 3);
}
を
しかし、私はこのエラーがあるメソッドを実行しようとするとき:
/usr/lib/jvm/jdk1.8.0_111/bin/java: symbol lookup error: /home/buzzo/Downloads/helloJni-master/jni/libMat.so: undefined symbol: _ZN2cv8cvtColorERKNS_11_InputArrayERKNS_12_OutputArrayEii
上記の問題はどういったものですか? –
.cppコードは機能しません。作成方法がわかりません。 –
.cppコードがうまくいかなかったと思いました。この質問がここにあるということで判断してください。しかし、私たちはもっと詳細が必要です。あなたはそれが何をすると思いますか?なぜあなたはそれを期待していますか?それは実際に何をしていますか?これらの詳細がなければ、私たちはあなたを助けることはできません。 –