F_VN_FindContoursExp

F_VN_FindContoursExp 1:

Search for object contours in a binary image. (expert function)
Can use available TwinCAT Job Tasks for executing parallel code regions.
Can return partial results when canceled by Watchdog.

Syntax

Definition:

FUNCTION F_VN_FindContoursExp : HRESULT
VAR_INPUT
    ipSrcImage           : ITcVnImage;
    ipContours           : Reference To ITcVnContainer;
    eRetrievalMode       : ETcVnContourRetrievalMode;
    eApproximationMethod : ETcVnContourApproximationMethod;
END_VAR
VAR_IN_OUT
    aOffset              : TcVnPoint;
END_VAR
VAR_INPUT
    hrPrev               : HRESULT;
END_VAR

F_VN_FindContoursExp 2: Inputs

Name

Type

Description

ipSrcImage

ITcVnImage

Source image (1 channel, binary)

ipContours

Reference To ITcVnContainer

Returns a container which is filled with the found contours (ContainerType_Vector_Vector_TcVnPoint2_DINT; The elements of this container are single contours. Non-zero interface pointers are reused.)

eRetrievalMode

ETcVnContourRetrievalMode

Specifies which contours are retrieved and how their relationship is encoded

eApproximationMethod

ETcVnContourApproximationMethod

Contour encoding

hrPrev

HRESULT

HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.)

F_VN_FindContoursExp 3: In/Outputs

Name

Type

Description

aOffset

TcVnPoint

Offset by which every contour point is shifted

F_VN_FindContoursExp 4: Return value

HRESULT

Weiterführende Informationen

Die Funktion F_VN_FindContoursExp ist die Expert-Variante von F_VN_FindContours. Sie enthält zusätzliche Parameter.

Parameter

Eingangsbild

Das Eingangsbild ipSrcImage muss genau 1 Kanal haben und sollte ein Binärbild sein.

Falls das Eingangsbild kein Binärbild ist, wird es intern mittels eines Schwellwerts von 1 in eins umgewandelt. Daher sollte das Eingangsbild manuell mit einem Schwellwert oder einer binären Segmentierung vorverarbeitet werden.

Liste an gefundenen Konturen (Rückgabewert)

Alle im Eingangsbild gefundenen Konturen werden in dem Container ipContours zurückgegeben. Der Container ist ein zweidimensionales Array von Punkten und hat daher den Typ ContainerType_Vector_Vector_TcVnPoint2_DINT.

Zurückgegeben werden die gefundenen Konturen in ipContours. Dabei setzt sich jede Kontur aus einer Summe von Punkten zusammen, welche in einem Container zusammengefasst werden. Ein weiterer übergeordneter Container fasst dann nochmal alle Konturen zusammen.

Suchmodus (Expert)

Der Suchmodus eRetrievalMode vom Typ ETcVnContourRetrievalMode legt fest, nach welchen Konturen gesucht wird:

  • TCVN_CRM_LIST: Alle Konturen
  • TCVN_CRM_EXTERNAL: Nur Außenkonturen (wie bei F_VN_FindContours)
  • TCVN_CRM_CONNECTED_COMPONENTS: Konturen mit einer zweischichtigen Hierarchie
  • TCVN_CRM_TREE: Alle Konturen; wird verwendet im Zusammenspiel mit der Funktion F_VN_FindContourHierarchyExp, um die Hierarchie der Konturen zu bestimmen
  • TCVN_CRM_FLOODFILL: Gibt die gefundenen Konturen mit Hilfe eines Floodfill-Algorithmus zurück (nur für DINT-Bilder verfügbar)

Approximationsart (Expert)

Die Approximationsart eApproximationMethod vom Typ ETcVnContourApproximationMethod legt fest, ob die Konturen anhand aller umschließender Punkte beschrieben werden sollen (TCVN_CAM_NONE) oder ob die Anzahl der beschreibenden Punkte mit Hilfe von Approximation reduziert werden soll.

Offset (Expert)

Das Offset aOffset legt konstante X-/Y-Werte fest, um die alle Konturpunkte verschoben werden. Dies kann hilfreich sein, wenn Konturen in einer ROI gesucht werden und ihre Positionen sich auf das Originalbild beziehen sollen.

Anwendung

Das Finden von allen Konturen im Eingangsbild, wobei die Konturpunkte nicht approximiert, aber in x-Richtung um 100px und in y-Richtung um -50px verschoben werden, sieht z. B. so aus:

VAR
    aOffset :   TcVnPoint   :=  [100, -50];
END_VAR

hr := F_VN_FindContours(
    ipSrcImage              :=  ipImageIn,
    ipContours              :=  ipContours,
    eRetrievalMode          :=  TCVN_CRM_LIST,
    eApproximationMethod    :=  TCVN_CAM_NONE,
    aOffset                 :=  aOffset,

    hrPrev                  :=  hr
);

Beispiele

Verwandte Funktionen

Required License

TC3 Vision Base

System Requirements

Development environment

Target platform

PLC libraries to include

TwinCAT V3.1. 4024.44 or later

PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU

Tc3_Vision