web-dev-qa-db-fra.com

Comment redimensionner une image en Java avec OpenCV?

Je recadre l'image et je souhaite la redimensionner ensuite.

Mat croppedimage = cropImage( image, rect );
Mat resizeimage = croppedimage.resize( any dimension ); //need to change this line

Comment puis-je faire ceci?

13
midhun0003

Je pense que tu veux ça .

par exemple.

Mat croppedimage = cropImage(image,rect);
Mat resizeimage = new Mat();
Size sz = new Size(100,100);
Imgproc.resize( croppedimage, resizeimage, sz );
40
berak

Si vous voulez mettre à l'échelle une image à l'aide d'OpenCV Java, procédez comme suit: 

  import static org.opencv.imgproc.Imgproc.*;
  import static org.opencv.imgcodecs.Imgcodecs.imread;

Code principal: 

   Mat src  =  imread("imageName.jpg");
   Mat resizeimage = new Mat();
   Size scaleSize = new Size(300,200);
   resize(src, resizeimage, scaleSize , 0, 0, INTER_AREA);

Pour la réduction d'échelle, il est recommandé d'utiliser: INTER_AREA et pour la conversion d'échelle, utilisez INTER_CUBIC.

Pour plus de détails: OpenCV Ref for Resize

1
asmmahmud
  1. Veuillez lire le manuel pour la méthode c ++ Redimensionner il en va de même pour Java.

  2. Vous pouvez choisir un type d'interpolation. Dans certains cas, c'est important pour un meilleur résultat. 

    Mat croppedImage = cropImage(image,rect);
    Mat resizeImage = new Mat(anyHeight, anyWidth, croppedImage.type());   
    int interpolation = Imgproc.INTER_CUBIC;   
    Imgproc.resize(croppedImage, resizeImage, resizeImage.size(), 0, 0, interpolation );
    
1
Alexander Mckey