Search code examples
javamatlabimage-processingmatlab-deploymentmatlab-compiler

I built a matlab code into a Java project, and now I am getting an error while running the java line of code that calls that matlab function


My matlab code does image processing, and I made matlab function which has 2 images as inputs. I wrote a separate java class to perform the imread function of matlab, i.e., to read the jpg images into 3D array (its an RGB image).

import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import QRcode_java.*;
import com.mathworks.toolbox.javabuilder.*;


public class Driver {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        encoder_class x=null;     //encoder_class is the class built from the  
                                        //matlab function                         

        Object[] barcode2=null;         //output of matlab function
        barcode_image_class barcode;     //class to imread the jpg image input
        barcode= new barcode_image_class();
        original_photo_class original_photo;  
             //class to imread another image input
        original_photo= new original_photo_class();

        try {
            x= new encoder_class();
            barcode2=x.encoder_function(barcode, original_photo); 
//**ERROR!** /*encoder_function is the matlab function written by me. this line gives an //error as the following: 
//"The method encoder_function(List, List) in the type encoder_class 
//is not applicable for the arguments (barcode_image_class, original_photo_class)"*/

        } catch (MWException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

Could you please tell me how to fix this error? Is it a problem with my java code, or the import of the matlab code? I am very new to Java, so I can't figure out the problem. Thanks!


Solution

  • From you comments, your have defined a method encoder_function(List, List) that takes two Lists as arguments. You are trying to call it with some parameters that are not Lists and that's why the compiler is complaining.

    To fix this, you have to either:

    • Change encoder_function(List, List) definition to take barcode_image_class, original_photo_class as arguments and update the method's code accordingly

    OR

    • Find a way to convert barcode_image_class, original_photo_class to List (either by implementing the List interface or by providing some helper method in both classes that convert them into Lists