Herror ::contlength (
    Hobject Regions,
    double *ContLength
)
Herror ::contlength (
    Hobject Regions,
    HTuple *ContLength
)
double HRegion::Contlength (
    void
) const
HTuple HRegionArray::Contlength (
    void
) const

Contour length of a region.

The operator ::contlength calculates the total length of the contour (sum of all connection components of the region) for each region of Regions. 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 ::contlength returns the value 0.


Attention

The contour of holes is not calculated.


Parameters

Regions (input_object)
region(-array) -> Hobject: HRegion(Array)
Region(s) to be examined.

ContLength (output_control)
real(-array) -> (HTuple.) double *
Contour length of the input region(s).
Assertion: ContLength >= 0


Example
#include  <iostream.h>
#include  "HalconCpp.h"

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);
}

Result

The operator ::contlength returns the value 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>). If necessary an exception handling is raised.


Possible Predecessors

::threshold, ::regiongrowing, ::connection


Possible Successors

::get_region_contour


Alternatives

::compactness


See also

::area_center, ::get_region_contour


Module

Region processing



Copyright © 1996-2002 MVTec Software GmbH