KlassenKlassenKlassenKlassen | | | | Operatoren

select_region_pointselect_region_pointSelectRegionPointselect_region_pointSelectRegionPointSelectRegionPoint (Operator)

Name

select_region_pointselect_region_pointSelectRegionPointselect_region_pointSelectRegionPointSelectRegionPoint — Auswählen aller Regionen, die einen übergebenen Punkt enthalten.

Signatur

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)

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

HRegionArray HRegionArray::SelectRegionPoint(const HTuple& Row, const HTuple& Column) const

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

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

void HOperatorSetX.SelectRegionPoint(
[in] IHUntypedObjectX* Regions, [out] IHUntypedObjectX*DestRegions, [in] VARIANT Row, [in] VARIANT Column)

IHRegionX* HRegionX.SelectRegionPoint(
[in] Hlong Row, [in] Hlong Column)

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

HRegion HRegion.SelectRegionPoint(int row, int column)

Beschreibung

select_region_pointselect_region_pointSelectRegionPointselect_region_pointSelectRegionPointSelectRegionPoint selektiert alle Regionen aus RegionsRegionsRegionsRegionsRegionsregions, die den Testpunkt (RowRowRowRowRowrow,ColumnColumnColumnColumnColumncolumn) enthalten, d.h.:

Achtung

Es kann vorkommen, dass mehr als eine Region den Punkt enthält, falls sich die Regionen überlappen. In diesem Fall werden all diese Regionen ausgegeben. Falls keine Region den angegebenen Punkt enthält, wird das leere Tupel (=keine Region) ausgegeben.

Parallelisierung

Parameter

RegionsRegionsRegionsRegionsRegionsregions (input_object)  region-array objectHRegionHRegionHRegionArrayHRegionXHobject

Zu untersuchende Regionen.

DestRegionsDestRegionsDestRegionsDestRegionsDestRegionsdestRegions (output_object)  region-array objectHRegionHRegionHRegionArrayHRegionXHobject *

Alle Regionen, die den Testpunkt enthalten.

RowRowRowRowRowrow (input_control)  point.y HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Zeilenindex des Testpunktes.

Defaultwert: 100

ColumnColumnColumnColumnColumncolumn (input_control)  point.x HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Spaltenindex des Testpunktes.

Defaultwert: 100

Beispiel (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

Beispiel (C)

read_image(&Image,"fabrik");
open_window(0,0,-1,-1,0,"visible","",&WindowHandle);
regiongrowing(Image,&Seg,3,3,5.0,0);
set_color(WindowHandle,"red");
set_draw(WindowHandle,"margin");
do {
  printf("Select the region with the mouse (End right buttonn \n");
  get_mbutton(WindowHandle,&Row,&Column,&Button);
  select_region_point(Seg,&Single,Row,Column);
  disp_image(Image);
  disp_region(Single,WindowHandle);
  clear(Single);
} while(Button != 4);

Beispiel (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

Beispiel (C++ (HALCON 5.0-10.0))

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

Beispiel (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

Beispiel (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

Komplexität

Sei F die Fläche einer Region und N die Anzahl der Regionen, dann beträgt die Laufzeitkomplexität im Mittel O(ln(sqrt(F)) * N).

Ergebnis

select_region_pointselect_region_pointSelectRegionPointselect_region_pointSelectRegionPointSelectRegionPoint liefert den Wert 2 (H_MSG_TRUE), falls die Parameter korrekt sind. Das Verhalten bei leerer Eingabe (keine Eingaberegionen vorhanden) lässt sich mittels 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>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

thresholdthresholdThresholdthresholdThresholdThreshold, regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing, connectionconnectionConnectionconnectionConnectionConnection

Alternativen

test_region_pointtest_region_pointTestRegionPointtest_region_pointTestRegionPointTestRegionPoint

Siehe auch

get_mbuttonget_mbuttonGetMbuttonget_mbuttonGetMbuttonGetMbutton, get_mpositionget_mpositionGetMpositionget_mpositionGetMpositionGetMposition

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren