area_centerarea_centerAreaCenterAreaCenterarea_center面积中心(算子)
名称
area_centerarea_centerAreaCenterAreaCenterarea_center — 面积和区域中心。
签名
def area_center(regions: HObject) -> Tuple[Sequence[int], Sequence[float], Sequence[float]]
def area_center_s(regions: HObject) -> Tuple[int, float, float]
描述
算子 area_centerarea_centerAreaCenterAreaCenterAreaCenterarea_center 计算输入区域的面积和中心点。面积定义为区域的像素数量。中心点分别计算为所有像素的行坐标或列坐标的平均值。
在 区域 / 特征 这一章的文档中,您可找到一张展示不同面积区域的示意图。
若传递多个区域,结果将存储为元组,其中元组中值的索引对应输入区域的索引。若区域为空,且未设置其他行为(参见 set_systemset_systemSetSystemSetSystemSetSystemset_system),则所有参数值均为 0.0。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 在元组级别上自动并行化。
参数
RegionsRegionsRegionsRegionsregionsregions (输入对象) region(-array) → objectHRegionHObjectHRegionHobject
待检查的区域。
AreaAreaAreaAreaareaarea (输出控制) integer(-array) → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
区域的面积
RowRowRowRowrowrow (输出控制) point.y(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
中心行索引。
ColumnColumnColumnColumncolumncolumn (输出控制) point.x(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
中心列索引。
示例 (C++ (HALCON 5.0-10.0))
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
using namespace Halcon;
main()
{
Tuple area, row, column;
HImage img ("monkey");
HWindow w;
img.Display (w);
w.Click ();
HRegionArray reg = (img >= 164).Connection ();
reg.Display (w);
w.Click ();
area = reg.AreaCenter (&row, &column);
for (int i = 0; i < reg.Num (); i++)
{
cout << "Row [" << i << "]" << "= " << row[i].D ();
cout << "\t\tColumn [" << i << "]" << "= " << column[i].D () << endl;
}
cout << "Total number of regions: " << reg.Num () << endl;
return(0);
}
示例(C)
threshold(&Image,&Seg,120.0,255.0);
connection(Seg,&Connected);
T_area_center(Connected,&Area,&Row,&Column);
示例 (C++ (HALCON 5.0-10.0))
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
using namespace Halcon;
main()
{
Tuple area, row, column;
HImage img ("monkey");
HWindow w;
img.Display (w);
w.Click ();
HRegionArray reg = (img >= 164).Connection ();
reg.Display (w);
w.Click ();
area = reg.AreaCenter (&row, &column);
for (int i = 0; i < reg.Num (); i++)
{
cout << "Row [" << i << "]" << "= " << row[i].D ();
cout << "\t\tColumn [" << i << "]" << "= " << column[i].D () << endl;
}
cout << "Total number of regions: " << reg.Num () << endl;
return(0);
}
示例 (C++ (HALCON 5.0-10.0))
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
using namespace Halcon;
main()
{
Tuple area, row, column;
HImage img ("monkey");
HWindow w;
img.Display (w);
w.Click ();
HRegionArray reg = (img >= 164).Connection ();
reg.Display (w);
w.Click ();
area = reg.AreaCenter (&row, &column);
for (int i = 0; i < reg.Num (); i++)
{
cout << "Row [" << i << "]" << "= " << row[i].D ();
cout << "\t\tColumn [" << i << "]" << "= " << column[i].D () << endl;
}
cout << "Total number of regions: " << reg.Num () << endl;
return(0);
}
示例 (C++ (HALCON 5.0-10.0))
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
using namespace Halcon;
main()
{
Tuple area, row, column;
HImage img ("monkey");
HWindow w;
img.Display (w);
w.Click ();
HRegionArray reg = (img >= 164).Connection ();
reg.Display (w);
w.Click ();
area = reg.AreaCenter (&row, &column);
for (int i = 0; i < reg.Num (); i++)
{
cout << "Row [" << i << "]" << "= " << row[i].D ();
cout << "\t\tColumn [" << i << "]" << "= " << column[i].D () << endl;
}
cout << "Total number of regions: " << reg.Num () << endl;
return(0);
}
复杂度
若 F 为区域面积,则平均运行时间复杂度为 O(√F)。
结果
算子 area_centerarea_centerAreaCenterAreaCenterAreaCenterarea_center 在输入不为空时返回值 2 ( H_MSG_TRUE )。当输入为空(无可用输入区域)时,可设置行为通过算子 set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)。当空区域(区域是空集)时,可设置行为通过算子 set_system('empty_region_result',<Result>)set_system("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)set_system("empty_region_result",<Result>)。如有必要,则抛出异常。
可能的前趋
thresholdthresholdThresholdThresholdThresholdthreshold,
regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowingregiongrowing,
connectionconnectionConnectionConnectionConnectionconnection
另见
select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape
模块
基础