Name
contlengthcontlengthContlengthcontlengthContlengthContlength — Contour length of a region.
The operator contlengthcontlengthContlengthcontlengthContlengthContlength calculates the total length of the contour
(sum of all connection components of the region) for each region of
RegionsRegionsRegionsRegionsRegionsregions. The distance between two neighboring contour
points parallel to the coordinate axes is rated 1, the distance in the diagonal
is rated sqrt(2).
If more than one region is passed the numerical values of the
contour length are stored in a tuple, the position of a value in the tuple
corresponding to the position of the region in the input tuple. In case of an
empty region the operator contlengthcontlengthContlengthcontlengthContlengthContlength returns the value 0.
The contour of holes is not calculated.
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Automatically parallelized on tuple level.
Region(s) to be examined.
Contour length of the input region(s).
Assertion: ContLength >= 0
#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);
}
#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);
}
#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);
}
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
using namespace Halcon;
int main (int argc, char *argv[])
{
if (argc < 2)
{
cout << "Usage: " << argv[0] << " <# of regions> " << endl;
return (-1);
}
HWindow w;
HRegionArray reg;
int NumOfElements = atoi (argv[1]);
cout << "Draw " << NumOfElements << " regions " << endl;
for (int i=0; i < NumOfElements; i++)
{
reg[i] = w.DrawRegion ();
}
Tuple circ = reg.Circularity ();
Tuple cont = reg.Contlength ();
for (i = 0; i < NumOfElements; i++)
{
cout << "Circularity of " << i+1 << ". region = " << circ[i].D();
cout << "\t\t Contour Length of" << i+1 <<
". region = " << cont[i].D() << endl;
}
w.Click ();
return(0);
}
#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);
}
#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);
}
The operator contlengthcontlengthContlengthcontlengthContlengthContlength returns the value 2 (H_MSG_TRUE)
if the input is not empty.
The behavior in case of empty input (no input regions available) is
set via the operator set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>).
If necessary an exception is raised.
thresholdthresholdThresholdthresholdThresholdThreshold,
regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing,
connectionconnectionConnectionconnectionConnectionConnection
get_region_contourget_region_contourGetRegionContourget_region_contourGetRegionContourGetRegionContour
compactnesscompactnessCompactnesscompactnessCompactnessCompactness
area_centerarea_centerAreaCenterarea_centerAreaCenterAreaCenter,
get_region_contourget_region_contourGetRegionContourget_region_contourGetRegionContourGetRegionContour
Foundation