Senkrechte Linie zu einer Linie in opencv zeichnen

8

Ich erkläre mein Problem mit einem Bild besser

Ich habe eine Kontur und eine Linie , die durch diese Kontur verläuft.
Am Schnittpunkt Punkt von Kontur und Linie möchte ich eine senkrechte Linie am Schnittpunkt einer Linie und Kontur bis zu einer bestimmten Entfernung zeichnen.
Ich kenne den Schnittpunkt Punkt sowie Neigung der Linie.
Als Referenz befestige ich dieses Bild.

    
Wazzzy 29.12.2011, 06:58
quelle

2 Antworten

6

Wenn die blaue Linie in Ihrem Bild von Punkt A nach Punkt B geht und Sie die rote Linie an Punkt B zeichnen möchten, können Sie Folgendes tun:

  1. Erhalte den Richtungsvektor von A nach B. Dies wäre: %Code%
  2. Normalisieren Sie den Vektor: %Code%
  3. Drehen Sie den Vektor um 90 Grad, indem Sie x und y vertauschen und einen von ihnen invertieren. Hinweis zur Drehrichtung: Bei OpenCV und Bildbearbeitung sind generell x- und y-Achse auf dem Bild nicht euklidisch orientiert, insbesondere die y-Achse zeigt nach unten und nicht nach oben. Im euklidischen Modus würde das Umkehren des letzten x (anfängliches y) gegen den Uhrzeigersinn rotieren (Standard für euklidisch), und invertiertes y würde sich im Uhrzeigersinn drehen. In OpenCV ist das Gegenteil der Fall. Also zum Beispiel, um im OpenCV im Uhrzeigersinn zu drehen: v.x = B.x - A.x; v.y = B.y - A.y;
  4. Erstellen Sie eine neue Zeile in B, die in Richtung von v zeigt: %Code% (Beachten Sie, dass Sie es in beide Richtungen erweitern können, indem Sie einen Punkt D in die entgegengesetzte Richtung erstellen, indem Sie einfach die Länge negieren.)
user1118321 29.12.2011, 07:11
quelle
1

Dies ist meine Version der Funktion:

%Vor%     
CofeDrink68 17.01.2018 17:04
quelle

Tags und Links