select_region_point🔗
Short description🔗
select_region_point — Choose all regions containing a given pixel.
Signature🔗
select_region_point( region Regions, out region DestRegions, point.y Row, point.x Column )
Description🔗
The operator select_region_point selects all regions from Regions
containing the test pixel (Row,Column), 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🔗
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🔗
Regions (input_object) region-array → object
Regions to be examined.
DestRegions (output_object) region-array → object
All regions containing the test pixel.
Row (input_control) point.y → (integer)
Line index of the test pixel.
Default: 100
Column (input_control) point.x → (integer)
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
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)\;
#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)\;
}
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_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>).
If necessary an exception is raised.
Combinations with other operators🔗
Module🔗
Foundation