ZV_CONTSEGMENT -- 轮廓分割

类型

轮廓

描述

轮廓分割,将连续的曲线轮廓分割成一段段小的直线、圆弧、椭圆弧基元等小的轮廓段

注意:仅支持基本轮廓,或多边形轮廓但分割类型只能是直线段,处理后还是基本轮廓,如ZV_CONTAPPROXPOLY处理过的轮廓不能用于圆弧或椭圆弧基元分割(点数太少不能准确拟合圆或椭圆)

语法

ZV_CONTSEGMENT(cont,list,type,eps1,eps2)

参数:

contZVOBJECT类型,输入轮廓

listZVOBJECT类型,列表类型,分割后的多段轮廓列表

type:分割类型,分割成轮廓基元的类型,01类型用的较多,2用的较少

0

直线段

1

直线或圆弧段

2

直线或椭圆弧段

eps1:多边形近似的精度,即将曲线轮廓分割成小线段的精度,精度值越小对于后续的轮廓基元如圆弧分割则越精确,常用值11.52,建议值1

eps2:多边形轮廓融合成基元的精度,如某段轮廓拟合成圆弧的精度,即此轮廓拟合成圆弧的精度小于等于eps2则此段轮廓用圆弧基元表示,常用值11.52eps2要大于eps1

适用控制器

支持ZV功能或者5系列以上的控制器

例子

14

ZVOBJECT img, img_bw, dst, contlist, contlist_seg, con_src

DIM con_count

ZV_READIMAGE(img, "test.jpg",0)'以原图像格式读取图片

ZV_THRESH(img,img_bw,150,255)'图像二值化

ZV_CONTGEN(img_bw,contlist,1,0)'生成轮廓

ZV_CONTSETMAXRADIUS(1000)'设置圆弧最大半径为1000

con_count = ZV_LISTCOUNT(contlist)'获取轮廓列表个数

ZV_IMGCOPY(img,dst)'复制图像

ZV_IMGSETCONST(dst,0)'常数填充图像

FOR i = 0 TO con_count-1

ZV_LISTGET(contlist, con_src,i)'获取某个轮廓

ZV_CONTSEGMENT(con_src,contlist_seg,1,1,1)'将轮廓分割成直线和圆弧基元

ZV_CONTLIST(dst,contlist_seg,255,0)'绘制轮廓

NEXT