Operator Reference

select_region_pointselect_region_pointSelectRegionPointSelectRegionPointselect_region_point (Operator)

select_region_pointselect_region_pointSelectRegionPointSelectRegionPointselect_region_point — Choose all regions containing a given pixel.

Signature

select_region_point(Regions : DestRegions : Row, Column : )

Herror select_region_point(const Hobject Regions, Hobject* DestRegions, const Hlong Row, const Hlong Column)

Herror T_select_region_point(const Hobject Regions, Hobject* DestRegions, const Htuple Row, const Htuple Column)

void SelectRegionPoint(const HObject& Regions, HObject* DestRegions, const HTuple& Row, const HTuple& Column)

HRegion HRegion::SelectRegionPoint(Hlong Row, Hlong Column) const

static void HOperatorSet.SelectRegionPoint(HObject regions, out HObject destRegions, HTuple row, HTuple column)

HRegion HRegion.SelectRegionPoint(int row, int column)

def select_region_point(regions: HObject, row: int, column: int) -> HObject

Description

The operator select_region_pointselect_region_pointSelectRegionPointSelectRegionPointselect_region_point selects all regions from RegionsRegionsRegionsregionsregions containing the test pixel (RowRowRowrowrow,ColumnColumnColumncolumncolumn), i.e.:

Attention

If the regions overlap more than one region might contain the pixel. In this case all these regions are returned. If no region contains the indicated pixel the empty tuple (= no region) is returned.

Execution Information

  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).
  • Multithreading scope: global (may be called from any thread).
  • Automatically parallelized on tuple level.

Parameters

RegionsRegionsRegionsregionsregions (input_object)  region-array objectHRegionHObjectHObjectHobject

Regions to be examined.

DestRegionsDestRegionsDestRegionsdestRegionsdest_regions (output_object)  region-array objectHRegionHObjectHObjectHobject *

All regions containing the test pixel.

RowRowRowrowrow (input_control)  point.y HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Line index of the test pixel.

Default: 100

ColumnColumnColumncolumncolumn (input_control)  point.x HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Column index of the test pixel.

Default: 100

Example (HDevelop)

read_image(Image,'fabrik')
regiongrowing(Image,Seg,3,3,5,0)
dev_set_color('red')
dev_set_draw('margin')
Button := 1
while (Button == 1)
  get_mbutton(WindowHandle,Row,Column,Button)
  select_region_point(Seg,Single,Row,Column)
  dev_display(Image)
  dev_display(Single)
endwhile

Example (C)

read_image(&Image,"fabrik");
regiongrowing(Image,&Seg,3,3,5.0,0);
do {
  printf("Select the region with the mouse (End right button \n");
  get_mbutton(WindowHandle,&Row,&Column,&Button);
  select_region_point(Seg,&Single,Row,Column);
  clear(Single);
} while(Button != 4);

Example (C++)

#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
using namespace Halcon;

int main ()
{
  HImage        img ("fabrik");
  HWindow       w;
  HRegionArray  ireg, reg;
  DPoint2D      rc;
  int           Button;

  reg = img.Regiongrowing (3, 3, 5, 100);
  reg.Display (w);
  w.SetColor ("red");
  w.SetDraw  ("margin");

  cout << "Select any region with left mouse button (right button ends)"
       << endl;
  do
  {
    rc = w.GetMbutton (&Button);
    cout << "[x, y] = " << (Hlong) rc.X() << ", " << (long) rc.Y() << endl;
    ireg = reg.SelectRegionPoint ((Hlong) rc.Y(), (long) rc.X());
    img.Display (w);
    ireg.Display (w);
  } while (Button != 4);
  return(0);
}

Example (HDevelop)

read_image(Image,'fabrik')
regiongrowing(Image,Seg,3,3,5,0)
dev_set_color('red')
dev_set_draw('margin')
Button := 1
while (Button == 1)
  get_mbutton(WindowHandle,Row,Column,Button)
  select_region_point(Seg,Single,Row,Column)
  dev_display(Image)
  dev_display(Single)
endwhile

Complexity

If F is the area of the region and N is the number of regions, the mean runtime complexity is O(ln(sqrt(F)) * N).

Result

The operator select_region_pointselect_region_pointSelectRegionPointSelectRegionPointselect_region_point returns the value 2 ( H_MSG_TRUE) if the parameters are correct. 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>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>). If necessary an exception is raised.

Possible Predecessors

thresholdthresholdThresholdThresholdthreshold, regiongrowingregiongrowingRegiongrowingRegiongrowingregiongrowing, connectionconnectionConnectionConnectionconnection

Alternatives

test_region_pointtest_region_pointTestRegionPointTestRegionPointtest_region_point

See also

get_mbuttonget_mbuttonGetMbuttonGetMbuttonget_mbutton, get_mpositionget_mpositionGetMpositionGetMpositionget_mposition

Module

Foundation