select_region_pointselect_region_pointSelectRegionPointSelectRegionPointselect_region_point — Auswählen aller Regionen, die einen übergebenen Punkt enthalten.
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.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
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);
Beispiel (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);
}
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_pointSelectRegionPointSelectRegionPointselect_region_point 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>) festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.