Ask Your Question
0

android SLIC superpixel

asked Sep 13 '18

manef gravatar image

I'm new android developer. I'm looking to use the superpixel SLIC algorithm on android studio. but after testing my code i got this bug:

java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.ximgproc.Ximgproc.createSuperpixelSLIC_0(long, int, int, float) (tried Java_org_opencv_ximgproc_Ximgproc_createSuperpixelSLIC_10 and Java_org_opencv_ximgproc_Ximgproc_createSuperpixelSLIC_10__JIIF)

And this is my Code, can someone help me i need the SLIC superpixel in my app and i couldn't figure out how to resolve this bug ?!!!

public class MainActivity extends AppCompatActivity {

private static final String TAG = "3:qinQctivity";
Button button;
ImageView imageView;

Mat newImage;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button = findViewById(R.id.button);
    imageView = findViewById(R.id.image);


    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if (!OpenCVLoader.initDebug()) {
                OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_4_0, getApplicationContext(), baseLoaderCallback);
            } else {
                baseLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);

            }
        }
    });

}

BaseLoaderCallback baseLoaderCallback = new BaseLoaderCallback(this) {
    @Override
    public void onManagerConnected(int status) {
        super.onManagerConnected(status);
        if (status == LoaderCallbackInterface.SUCCESS) {
            try {
                newImage = new Mat();

                newImage = Utils.loadResource(getApplicationContext(), R.drawable.retinalimage, CvType.CV_32FC3);

                SuperpixelSLIC x= Ximgproc.createSuperpixelSLIC(newImage, Ximgproc.SLIC,50,(float)0.001);



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

    }


} ;

void showImage (Mat y){
    Bitmap bm = Bitmap.createBitmap(y.width(), y.height(), Bitmap.Config.ARGB_8888);
    Utils.matToBitmap(y, bm);
    imageView.setImageBitmap(bm);
}

}

Preview: (hide)

Comments

this function will only exist, IF you rebuilt the sdk with opencv_contrib locally, so, did you do that ?

berak gravatar imageberak (Sep 13 '18)edit

oh, and afaik, you cannot use dynamic initialization (and the opencv manager app, because that does not have any contrib libs)

berak gravatar imageberak (Sep 13 '18)edit

i'm using opencv_contiv 3.4.1 from link text android studio accepted the SuperpixelSLIC type

manef gravatar imagemanef (Sep 13 '18)edit

1 answer

Sort by » oldest newest most voted
0

answered Oct 11 '18

manef gravatar image

i found the solution, i had to install opencv manager higher than i used before ( 3.0.0) so installed opencv manager 3.4 and it worked for me, i added some code line to have the result i'm looking for.

Preview: (hide)

Question Tools

1 follower

Stats

Asked: Sep 13 '18

Seen: 393 times

Last updated: Oct 11 '18