contlengthcontlengthContlengthContlengthcontlength berechnet für jede Region aus RegionsRegionsRegionsregionsregions
die Gesamtlänge der Kontur (Summe über alle Zusammenhangskomponenten
der Region). Dabei wird der Abstand von zwei benachbarten Konturpunkten
parallel zu den Koordinatenachsen mit 1, der Abstand in der Diagonalen
mit bewertet.
In der Dokumentation zu diesem Kapitel (Regionen / Merkmale) finden
Sie ein Bild mit Regionen, die sich in der Konturlänge unterscheiden.
Wird mehr als eine Region übergeben, dann werden die Zahlenwerte der
Konturlänge in einem Tupel abgespeichert, wobei die Position eines Wertes
in dem Tupel der Position einer Region im Eingabetupel entspricht.
Bei einer leeren Region liefert contlengthcontlengthContlengthContlengthcontlength den Wert 0.
Achtung
Die Kontur von Hohlflächen wird nicht mitgerechnet.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
#include "HalconCpp.h"
#include <iostream>
using namespace HalconCpp;
int main (int argc, char *argv[])
{
HWindow w(10,10,512,512);
HRegion reg;
int NumOfElements = 3;
std::cout << "Draw " << NumOfElements << " regions " << std::endl;
GenEmptyObj(®);
for (int i=0; i < NumOfElements; i++)
{
reg = reg.ConcatObj(w.DrawRegion());
}
HTuple circ = reg.Circularity ();
HTuple cont = reg.Contlength ();
for (int i = 0; i < NumOfElements; i++)
{
std::cout << "region " << i+1 << ": \tcircularity = " << circ[i].D() <<
"\tcontour length =" << cont[i].D() << std::endl;
}
std::cout << "Click into the graphics window to end." << std::endl;
w.Click ();
return(0);
}
Beispiel (C++)
#include "HalconCpp.h"
#include <iostream>
using namespace HalconCpp;
int main (int argc, char *argv[])
{
HWindow w(10,10,512,512);
HRegion reg;
int NumOfElements = 3;
std::cout << "Draw " << NumOfElements << " regions " << std::endl;
GenEmptyObj(®);
for (int i=0; i < NumOfElements; i++)
{
reg = reg.ConcatObj(w.DrawRegion());
}
HTuple circ = reg.Circularity ();
HTuple cont = reg.Contlength ();
for (int i = 0; i < NumOfElements; i++)
{
std::cout << "region " << i+1 << ": \tcircularity = " << circ[i].D() <<
"\tcontour length =" << cont[i].D() << std::endl;
}
std::cout << "Click into the graphics window to end." << std::endl;
w.Click ();
return(0);
}
Beispiel (C++)
#include "HalconCpp.h"
#include <iostream>
using namespace HalconCpp;
int main (int argc, char *argv[])
{
HWindow w(10,10,512,512);
HRegion reg;
int NumOfElements = 3;
std::cout << "Draw " << NumOfElements << " regions " << std::endl;
GenEmptyObj(®);
for (int i=0; i < NumOfElements; i++)
{
reg = reg.ConcatObj(w.DrawRegion());
}
HTuple circ = reg.Circularity ();
HTuple cont = reg.Contlength ();
for (int i = 0; i < NumOfElements; i++)
{
std::cout << "region " << i+1 << ": \tcircularity = " << circ[i].D() <<
"\tcontour length =" << cont[i].D() << std::endl;
}
std::cout << "Click into the graphics window to end." << std::endl;
w.Click ();
return(0);
}
Beispiel (C++)
#include "HalconCpp.h"
#include <iostream>
using namespace HalconCpp;
int main (int argc, char *argv[])
{
HWindow w(10,10,512,512);
HRegion reg;
int NumOfElements = 3;
std::cout << "Draw " << NumOfElements << " regions " << std::endl;
GenEmptyObj(®);
for (int i=0; i < NumOfElements; i++)
{
reg = reg.ConcatObj(w.DrawRegion());
}
HTuple circ = reg.Circularity ();
HTuple cont = reg.Contlength ();
for (int i = 0; i < NumOfElements; i++)
{
std::cout << "region " << i+1 << ": \tcircularity = " << circ[i].D() <<
"\tcontour length =" << cont[i].D() << std::endl;
}
std::cout << "Click into the graphics window to end." << std::endl;
w.Click ();
return(0);
}
Ergebnis
contlengthcontlengthContlengthContlengthcontlength liefert den Wert 2 (
H_MSG_TRUE)
, falls die Eingabe nicht leer
ist.
Das Verhalten bei leerer Eingabe (keine Eingaberegionen vorhanden) lässt
sich mittels set_system('no_object_result',<Result>)
festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.