0

顔検出にopencvとjavaを使用しようとしていますが、その目的でこの「JNI2OPENCV」ファイルを見つけました....しかし、それを機能させる方法について混乱しています。誰か助けてもらえますか?

http://img519.imageshack.us/img519/4803/askaj.jpg

以下はFaceDetection.javaです

class JNIOpenCV {
    static {
        System.loadLibrary("JNI2OpenCV");
    }
    public native int[] detectFace(int minFaceWidth, int minFaceHeight, String cascade, String filename);
}

public class FaceDetection {
    private JNIOpenCV myJNIOpenCV;
    private FaceDetection myFaceDetection;

    public FaceDetection() {
        myJNIOpenCV = new JNIOpenCV();
        String filename = "lena.jpg";
        String cascade = "haarcascade_frontalface_alt.xml";

    int[] detectedFaces = myJNIOpenCV.detectFace(40, 40, cascade, filename);
    int numFaces = detectedFaces.length / 4;

        System.out.println("numFaces = " + numFaces);
        for (int i = 0; i < numFaces; i++) {
            System.out.println("Face " + i + ": " + detectedFaces[4 * i + 0] + " " + detectedFaces[4 * i + 1] + " " + detectedFaces[4 * i + 2] + " " + detectedFaces[4 * i + 3]);
        }
    }

    public static void main(String args[]) {
        FaceDetection myFaceDetection = new FaceDetection();   
    }
}

Netbeansでこれを機能させるにはどうすればよいですか? Google を試してみましたが、この特定のトピックに関するヘルプは非常に貧弱です。

フォルダー全体を netbeans プロジェクトの Llibrary として追加しました。ファイルを実行しようとすると、次のエラーが発生します。

Exception in thread "main" java.lang.UnsatisfiedLinkError: FaceDetection.JNIOpenCV.detectFace(IILjava/lang/String;Ljava/lang/String;)[I at FaceDetection.JNIOpenCV.detectFace(Native Method) at FaceDetection.FaceDetection.<init>(FaceDetection.java:19) at FaceDetection.FaceDetection.main(FaceDetection.java:29) Java Result: 1 BUILD SUCCESSFUL (total time: 2 seconds)

誰でもこれを操作する正確な方法を教えてもらえますか? 私がしなければならないことは何ですか?

4

3 に答える 3

0

Windows で JNI を使用している場合は、Dependency Walkerが役に立ちます。

System.out.println("java.library.path="+System.getProperty("java.library.path")); ただし、その前に、静的コンストラクター ブロックに 次を追加して、JRE が JNIOpenCV.dll を検出できることを確認します 。

ただし、ここでの問題は JNIOpenCV.dll ファイルを見つけることではなく、依存するファイルを見つけることだと思います。依存関係ウォーカーで .dll を開き (そこにドラッグするだけです)、エラー メッセージを探します (msjava.dll を除く - 無視してください。問題ありません)。おそらく、Microsoft Visual C/C++ ランタイム ライブラリが必要であり、Visual Studio の Web サイトからダウンロードして、dll と同じフォルダーに配置する必要があるというのが私の推測です。

頑張ってください!

于 2010-03-17T04:23:30.933 に答える
0

Netbeans の代わりに OpenCV 2.3.1 と Eclipse を使用して、動作する Android の例を作成しました。

この小さなチュートリアルでは、トーチライトを追うロボットについて説明します。このページには、必要な手順とソース コードも含まれています。

于 2011-12-21T13:36:57.770 に答える
0

こちらをご覧ください。いくつかの例が JNI に接続されています。

http://code.google.com/p/android-opencv/

于 2010-08-24T05:05:50.070 に答える