approx_chain_simpleT_approx_chain_simpleApproxChainSimpleApproxChainSimpleapprox_chain_simple近似链简单(算子)

名称

approx_chain_simpleT_approx_chain_simpleApproxChainSimpleApproxChainSimpleapprox_chain_simple — 用圆弧和线近似轮廓。

警告

approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimpleapprox_chain_simple 已过时,仅出于向后兼容性考虑而保留。

签名

approx_chain_simple( : : Row, Column : ArcCenterRow, ArcCenterCol, ArcAngle, ArcBeginRow, ArcBeginCol, LineBeginRow, LineBeginCol, LineEndRow, LineEndCol, Order)

Herror T_approx_chain_simple(const Htuple Row, const Htuple Column, Htuple* ArcCenterRow, Htuple* ArcCenterCol, Htuple* ArcAngle, Htuple* ArcBeginRow, Htuple* ArcBeginCol, Htuple* LineBeginRow, Htuple* LineBeginCol, Htuple* LineEndRow, Htuple* LineEndCol, Htuple* Order)

void ApproxChainSimple(const HTuple& Row, const HTuple& Column, HTuple* ArcCenterRow, HTuple* ArcCenterCol, HTuple* ArcAngle, HTuple* ArcBeginRow, HTuple* ArcBeginCol, HTuple* LineBeginRow, HTuple* LineBeginCol, HTuple* LineEndRow, HTuple* LineEndCol, HTuple* Order)

static void HMisc::ApproxChainSimple(const HTuple& Row, const HTuple& Column, HTuple* ArcCenterRow, HTuple* ArcCenterCol, HTuple* ArcAngle, HTuple* ArcBeginRow, HTuple* ArcBeginCol, HTuple* LineBeginRow, HTuple* LineBeginCol, HTuple* LineEndRow, HTuple* LineEndCol, HTuple* Order)

static void HOperatorSet.ApproxChainSimple(HTuple row, HTuple column, out HTuple arcCenterRow, out HTuple arcCenterCol, out HTuple arcAngle, out HTuple arcBeginRow, out HTuple arcBeginCol, out HTuple lineBeginRow, out HTuple lineBeginCol, out HTuple lineEndRow, out HTuple lineEndCol, out HTuple order)

static void HMisc.ApproxChainSimple(HTuple row, HTuple column, out HTuple arcCenterRow, out HTuple arcCenterCol, out HTuple arcAngle, out HTuple arcBeginRow, out HTuple arcBeginCol, out HTuple lineBeginRow, out HTuple lineBeginCol, out HTuple lineEndRow, out HTuple lineEndCol, out HTuple order)

def approx_chain_simple(row: Sequence[int], column: Sequence[int]) -> Tuple[Sequence[int], Sequence[int], Sequence[float], Sequence[int], Sequence[int], Sequence[int], Sequence[int], Sequence[int], Sequence[int], Sequence[int]]

描述

曲线的轮廓由一系列线和弧近似表示。

该函数的结果将弧和线分别返回。若需获取段序列,可从返回元组中依次读取各个结果元素。序列可通过返回参数 order(0:下一个元素为下一条线段;1:下一个元素为下一条弧线段)获取。

算子 approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimpleapprox_chain_simple 的行为与 approx_chainapprox_chainApproxChainApproxChainApproxChainapprox_chain 类似,但当使用 approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimpleapprox_chain_simple 时,缺失的参数会在内部按以下方式分配: MinWidthCoord = 1.0、MaxWidthCoord = 3.0、 ThreshStart = 0.5、ThreshEnd = 0.9、ThreshStep = 0.3、MinWidthSmooth = 1.0、MaxWidthSmooth = 3.0、MinWidthCurve = 2、MaxWidthCurve = 9、 Weight1 = 1.0、Weight2 = 1.0、Weight3 = 1.0。

执行信息

参数

RowRowRowRowrowrow (输入控制)  point.y-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

轮廓的行。

默认值: 32

ColumnColumnColumnColumncolumncolumn (输入控制)  point.x-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

轮廓的列。

默认值: 32

ArcCenterRowArcCenterRowArcCenterRowArcCenterRowarcCenterRowarc_center_row (输出控制)  arc.center.y-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

弧中心的行。

ArcCenterColArcCenterColArcCenterColArcCenterColarcCenterColarc_center_col (输出控制)  arc.center.x-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

弧中心的列。

ArcAngleArcAngleArcAngleArcAnglearcAnglearc_angle (输出控制)  arc.angle.rad-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

弧角度。

ArcBeginRowArcBeginRowArcBeginRowArcBeginRowarcBeginRowarc_begin_row (输出控制)  arc.begin.y-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

弧起点的行。

ArcBeginColArcBeginColArcBeginColArcBeginColarcBeginColarc_begin_col (输出控制)  arc.begin.x-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

弧起点的列。

LineBeginRowLineBeginRowLineBeginRowLineBeginRowlineBeginRowline_begin_row (输出控制)  line.begin.y-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

线段起点的行。

LineBeginColLineBeginColLineBeginColLineBeginCollineBeginColline_begin_col (输出控制)  line.begin.x-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

线段起点的列。

LineEndRowLineEndRowLineEndRowLineEndRowlineEndRowline_end_row (输出控制)  line.end.y-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

线段终点的行。

LineEndColLineEndColLineEndColLineEndCollineEndColline_end_col (输出控制)  line.end.x-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

线段终点的列。

OrderOrderOrderOrderorderorder (输出控制)  integer-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

由线(值为0)和弧(值为1)组成的序列。

示例(C)

/* read edge image */
read_image(&Image,"fig1_kan");
/* construct edge region */
hysteresis_threshold(Image,&RK1,64,255,40,1);
connection(RK1,&Rand);
/* fetch chain code */
T_get_region_contour(Rand,&Rows,&Columns);
firstline = get_i(Tline,0);
firstcol = get_i(Tcol,0);
/* approximation with lines and circular arcs */
T_approx_chain_simple(Rows,Columns,
                &Bzl,&Bzc,&Br,&Bwl,&Bwc,&Ll0,&Lc0,&Ll1,&Lc1,&order);
nob = length_tuple(Bzl);
nol = length_tuple(Ll0);
/* draw lines and arcs */
set_i(WindowHandleTuple,WindowHandle,0);
set_line_width(WindowHandle,4);
if (nob>0) T_disp_arc(Bzl,Bzc,Br,Bwl,Bwc);
set_line_width(WindowHandle,1);
if (nol>0) T_disp_line(WindowHandleTuple,Ll0,Lc0,Ll1,Lc1);

结果

算子 approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimpleapprox_chain_simple 在参数正确时返回值 2 ( H_MSG_TRUE )。否则将抛出异常。

可能的前趋

sobel_ampsobel_ampSobelAmpSobelAmpSobelAmpsobel_amp, edges_imageedges_imageEdgesImageEdgesImageEdgesImageedges_image, get_region_contourget_region_contourGetRegionContourGetRegionContourGetRegionContourget_region_contour, thresholdthresholdThresholdThresholdThresholdthreshold, hysteresis_thresholdhysteresis_thresholdHysteresisThresholdHysteresisThresholdHysteresisThresholdhysteresis_threshold

可能的后继

set_line_widthset_line_widthSetLineWidthSetLineWidthSetLineWidthset_line_width, disp_arcdisp_arcDispArcDispArcDispArcdisp_arc, disp_linedisp_lineDispLineDispLineDispLinedisp_line

替代

get_region_polygonget_region_polygonGetRegionPolygonGetRegionPolygonGetRegionPolygonget_region_polygon, approx_chainapprox_chainApproxChainApproxChainApproxChainapprox_chain

另见

get_region_chainget_region_chainGetRegionChainGetRegionChainGetRegionChainget_region_chain, smallest_circlesmallest_circleSmallestCircleSmallestCircleSmallestCirclesmallest_circle, disp_circledisp_circleDispCircleDispCircleDispCircledisp_circle, disp_linedisp_lineDispLineDispLineDispLinedisp_line

模块

基础