javaopencvarraylist

Java CV_IMWRITE_JPEG_QUALITY usage for imwrite in opencv 2.4.8


I'm trying to set the compression level for a image I'm writing in Opencv 2.4.8 (Can't use a later version for now) in Java 1.8x using the following code:

   ArrayList<Integer> parameters;
   parameters = new ArrayList;

   parameters.add(CV_IMWRITE_JPEG_QUALITY);
   parameters.add(quality);

   Highgui.imwrite("temp.jpg", image_entry, parameters);

On Compilation I'm currently getting:

 "error: incompatible types: ArrayList<Integer> cannot be converted to MatOfInt
        Highgui.imwrite("temp.jpg", image_entry, parameters);" 

Any suggestions?


Solution

  • // Parameter settings for JPEG compression
    List<Integer> parameters = new ArrayList<>();
    parameters.add(IMWRITE_JPEG_QUALITY);
    parameters.add(quality);
    
    MatOfInt par = new MatOfInt();
    par.fromList(parameters);
    
    Imgcodecs.imwrite("c:/test/temp.jpg", image_entry,(par));