1

私はこの問題について大量の調査を行い、それらすべてを試しましたが、どれも機能しませんでした。そのため、新しいトピックの時間です。ユーザーがデバイスから画像を選択すると、プログラムがキーポイントが描かれた同じ画像を返すプロジェクトを作成しています。以前にopenCVで他のプログラムを作成し、それをAndroidでまったく同じ方法で使用しましたが、ウィンドウの代わりにimageViewの表示方法を変更しただけです。これはimageViewのコードです:

public void setPic(View v){
    Intent in=new Intent(Intent.ACTION_GET_CONTENT);
    in.setType("image/*");
    startActivityForResult(in,FILE_REQUEST);
}
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    switch(requestCode) { 
    case FILE_REQUEST:
        if(resultCode == RESULT_OK){  
            Uri selectedImage = imageReturnedIntent.getData();
            InputStream imageStream;
           // exception handle!!!
            try {
                imageStream = getContentResolver().openInputStream(selectedImage);
                Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
                img.setImageBitmap(yourSelectedImage);

                keyPointDetection(selectedImage.getPath());
            } 

            catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
    }
}

そして、これはキーポイントをキャプチャし、キーポイントを含む imageView から選択した画像を出力する部分であると想定されています。

public static KeyPoint[] keyPointDetection(String filename){
    MatOfKeyPoint keypoints = new MatOfKeyPoint();

    FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB);
    neki = Highgui.imread(filename);

    detector.detect(neki, keypoints);
    KeyPoint[] keypoint = keypoints.toArray();

    Bitmap resultBitmap = Bitmap.createBitmap(keypoints.cols(),keypoints.rows(),Bitmap.Config.ARGB_8888);;
    Features2d.drawKeypoints(neki,keypoints,neki);
    Utils.matToBitmap(keypoints, resultBitmap);

    Highgui.imwrite("keypoints.jpg",neki);


    return keypoint;
}

そして、LogCat に次の行が表示されてプログラムがクラッシュします。

04-15 17:27:30.251: E/AndroidRuntime(9915): FATAL EXCEPTION: main
04-15 17:27:30.251: E/AndroidRuntime(9915): Process:  com.example.protorypemk2, PID: 9915
04-15 17:27:30.251: E/AndroidRuntime(9915): java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat() (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at org.opencv.core.Mat.n_Mat(Native Method)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at org.opencv.core.Mat.<init>(Mat.java:447)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at org.opencv.core.MatOfKeyPoint.<init>(MatOfKeyPoint.java:14)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at com.example.protorypemk2.MainActivity.keyPointDetection(MainActivity.java:48)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at com.example.protorypemk2.MainActivity.onActivityResult(MainActivity.java:81)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at android.app.Activity.dispatchActivityResult(Activity.java:6135)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3564)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3611)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at android.app.ActivityThread.access$1400(ActivityThread.java:147)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1345)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at android.os.Handler.dispatchMessage(Handler.java:102)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at android.os.Looper.loop(Looper.java:135)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at android.app.ActivityThread.main(ActivityThread.java:5254)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at java.lang.reflect.Method.invoke(Native Method)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at java.lang.reflect.Method.invoke(Method.java:372)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
04-15 17:27:30.251: E/AndroidRuntime(9915):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
04-15 17:27:35.898: E/art(9915): No implementation found for void org.opencv.core.Mat.n_delete(long) (tried Java_org_opencv_core_Mat_n_1delete and Java_org_opencv_core_Mat_n_1delete__J)
04-15 17:27:35.898: E/System(9915): Uncaught exception thrown by finalizer
04-15 17:27:35.902: E/System(9915): java.lang.UnsatisfiedLinkError: No implementation found for void org.opencv.core.Mat.n_delete(long) (tried Java_org_opencv_core_Mat_n_1delete and Java_org_opencv_core_Mat_n_1delete__J)
04-15 17:27:35.902: E/System(9915):     at org.opencv.core.Mat.n_delete(Native Method)
04-15 17:27:35.902: E/System(9915):     at org.opencv.core.Mat.finalize(Mat.java:2475)
04-15 17:27:35.902: E/System(9915):     at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:190)
04-15 17:27:35.902: E/System(9915):     at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:173)
04-15 17:27:35.902: E/System(9915):     at java.lang.Thread.run(Thread.java:818)

よろしくお願いします。

4

0 に答える 0