Maison  >  Article  >  Java  >  Comment dessiner les contours d'une image à l'aide de la bibliothèque Java OpenCV ?

Comment dessiner les contours d'une image à l'aide de la bibliothèque Java OpenCV ?

WBOY
WBOYavant
2023-09-04 14:33:011018parcourir

Un contour n'est rien d'autre qu'une ligne reliant tous les points le long de la limite d'une forme spécifique. En l'utilisant, vous pouvez -

  • trouver la forme d'un objet.

  • Calculez la surface d'un objet.

  • Détectez les objets.

  • Reconnaître les objets.

Vous pouvez utiliser la méthode findContours() pour trouver les contours de diverses formes et objets dans l'image. De la même manière, vous pouvez dessiner

Vous pouvez dessiner les contours de l'image trouvée en utilisant la méthode drawContours() qui accepte les paramètres suivants -

  • Un objet Mat vide pour stocker l'image résultante.

  • Liste des objets contenant les contours trouvés.

  • Une valeur entière spécifiant les contours à dessiner (la valeur -ve est utilisée pour dessiner tous les contours).

  • Un objet scalaire spécifiant la couleur du contour.

  • Une valeur entière spécifiant l'épaisseur du contour.

Exemple

import java.util.ArrayList;
import java.util.List;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class DrawingContours {
   public static void main(String args[]) throws Exception {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      String file ="D:\Images\shapes.jpg";
      Mat src = Imgcodecs.imread(file);
      //Converting the source image to binary
      Mat gray = new Mat(src.rows(), src.cols(), src.type());
      Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
      Mat binary = new Mat(src.rows(), src.cols(), src.type(), new Scalar(0));
      Imgproc.threshold(gray, binary, 100, 255, Imgproc.THRESH_BINARY_INV);
      //Finding Contours
      List<MatOfPoint> contours = new ArrayList<>();
      Mat hierarchey = new Mat();
      Imgproc.findContours(binary, contours, hierarchey, Imgproc.RETR_TREE,
      Imgproc.CHAIN_APPROX_SIMPLE);
      //Drawing the Contours
      Scalar color = new Scalar(0, 0, 255);
      Imgproc.drawContours(src, contours, -1, color, 2, Imgproc.LINE_8,
      hierarchey, 2, new Point() ) ;
      HighGui.imshow("Drawing Contours", src);
      HighGui.waitKey();
   }
}

Image d'entrée

如何使用Java OpenCV库绘制图像轮廓?

Sortie

Une fois exécuté, le programme ci-dessus génère la fenêtre suivante -

Comment dessiner les contours d'une image à l'aide de la bibliothèque Java OpenCV ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer