Heim > Java > javaLernprogramm > Implementierung der probabilistischen Hough-Linientransformation von OpenCV in Java

Implementierung der probabilistischen Hough-Linientransformation von OpenCV in Java

PHPz
Freigeben: 2023-08-24 23:37:06
nach vorne
1041 Leute haben es durchsucht

Verwenden Sie die Hough-Linientransformation, um gerade Linien in einem bestimmten Bild zu erkennen. In OpenCV stehen zwei Hough-Linientransformationen zur Verfügung, nämlich die Standard-Hough-Linientransformation und die probabilistische Hough-Linientransformation.

Sie können die Probabilistische Hough-Linientransformation mit der Methode HoughLinesP() der Imgproc-Klasse anwenden, die die folgenden Parameter akzeptiert:

  • Zwei Mats, die das Quellbild darstellen, und einen Vektor, der die Linienparameter speichert (r , Φ) Objekt.

  • stellt zwei Doppelvariablen dar, die die Auflösung der Parameter r (Pixel) und Φ (Bogenmaß) darstellen.

  • Eine Ganzzahl, die die Mindestanzahl an Schnittpunkten darstellt, die zum „Erkennen“ einer Linie erforderlich sind.

Beispiel

Das folgende Java-Beispiel verwendet die probabilistische Hough-Linientransformation von OpenCV, um Linien in einem Bild zu erkennen:

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage;
import javafx.stage.Stage;
import org.opencv.core.Core;
import org.opencv.core.Mat;
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 HoughLineProbabilisticTransform extends Application {
   public void start(Stage stage) throws IOException {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      String file ="D:\Images\road4.jpg";
      Mat src = Imgcodecs.imread(file);
      //Converting the image to Gray
      Mat gray = new Mat();
      Imgproc.cvtColor(src, gray, Imgproc.COLOR_RGBA2GRAY);
      //Detecting the edges
      Mat edges = new Mat();
      Imgproc.Canny(gray, edges, 60, 60*3, 3, false);
      // Changing the color of the canny
      Mat cannyColor = new Mat();
      Imgproc.cvtColor(edges, cannyColor, Imgproc.COLOR_GRAY2BGR);
      //Detecting the hough lines from (canny)
      Mat lines = new Mat();
      Imgproc.HoughLinesP(edges, lines, 1, Math.PI/180, 50, 50, 10);
      for (int i = 0; i < lines.rows(); i++) {
         double[] data = lines.get(i, 0);
         //Drawing lines on the image
         Point pt1 = new Point(data[0], data[1]);
         Point pt2 = new Point(data[2], data[3]);
         Imgproc.line(cannyColor, pt1, pt2, new Scalar(0, 0, 255), 3);
      }
      //Converting matrix to JavaFX writable image
      Image img = HighGui.toBufferedImage(cannyColor);
      WritableImage writableImage= SwingFXUtils.toFXImage((BufferedImage) img, null);
      //Setting the image view
      ImageView imageView = new ImageView(writableImage);
      imageView.setX(10);
      imageView.setY(10);
      imageView.setFitWidth(575);
      imageView.setPreserveRatio(true);
      //Setting the Scene object
      Group root = new Group(imageView);
      Scene scene = new Scene(root, 595, 400);
      stage.setTitle("Hough Line Transform");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]) {
      launch(args);
   }
}
Nach dem Login kopieren

Eingabebild

Implementierung der probabilistischen Hough-Linientransformation von OpenCV in Java

Ausgabe

Ausführung Danach erzeugt der obige Code die folgende Ausgabe: −

Implementierung der probabilistischen Hough-Linientransformation von OpenCV in Java

Das obige ist der detaillierte Inhalt vonImplementierung der probabilistischen Hough-Linientransformation von OpenCV in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage