19、常用例子
一、生成二值化图像
1、region_to_bin(Region : BinImage : ForegroundGray, BackgroundGray, Width, Height : )
read_image (Image, 'fabrik')//读入图像
threshold (Image, Regions, 171, 255)//阈值分割,产生区域region
get_image_size (Image, Width, Height)//获取原始图像大小
region_to_bin (Regions, BinImage, 255, 0, Width, Height)//根据原始图像大小把region转换为image
2、paint_region(Region, Image : ImageResult : Grayval, Type : )
功能:在region定义区域内则输出指定的Grayval像素,不在region指定区域的则输出相应的Image像素。
read_image (Image, 'fabrik')
gen_rectangle1 (Region, 30, 20, 100, 200)//绘制矩形region
paint_region (Region, Image, ImageResult1, 255, 'fill')//输出图像
complement (Region, RegionComplement)//求region的补集
paint_region (RegionComplement, Image, ImageResult, 255, 'fill')//输出图像
二、剪裁图像
1、reduce_domain(Image, Region : ImageReduced : : )
在region定义区域内用Image像素输出到ImageReduced,region定义区域以外,没有像素值。
crop_domain(Image : ImagePart : : )
read_image (Image, 'fabrik')
gen_rectangle1 (Rectangle, 30, 20, 300, 300)//绘制矩形region
reduce_domain (Image, Rectangle, ImageReduced)//较少定于区域
crop_domain (ImageReduced, ImagePart)//剪裁图像
三、根据一个点、一个角度绘制一条直线(封装成函数)
函数体:h_gen_line( : Line : Row, Col, Angle, Length, RegionOrXLD : )
if (Length<1)
return()
endif
tuple_cos (Angle, Cos)
tuple_sin (Angle, Sin)
XX:=Length*Cos
YY:=Length*Sin
if (RegionOrXLD = 'Region')
gen_region_line (Line, Row, Col, Row+YY, Col+ XX)
else
gen_contour_polygon_xld (Line, [Row, Col], [Row+YY, Col+XX])
endif
return ()
四、输入一个仿射矩形,输出其四个端点以及四个边终点
get_rectangle2_points(::CenterY,CenterX,Phi,Len1,Len2:CornerY,CornerX,LineCenterY,LineCenterX)
ColT:= CenterX-Len1*Cos - Len2*Sin
RowT:= CenterY-(-Len1*Sin + Len2*Cos)
ColT:= CenterX+Len1*Cos - Len2*Sin
RowT:= CenterY-(Len1*Sin + Len2*Cos)
ColT:= CenterX+Len1*Cos + Len2*Sin
RowT:= CenterY-(Len1*Sin - Len2*Cos)
ColT := CenterX-Len1*Cos + Len2*Sin
RowT:= CenterY-(-Len1*Sin - Len2*Cos)
LineCenterY[0] := (CornerY[0]+CornerY[1])*0.5
LineCenterX[0] := (CornerX[0]+CornerX[1])*0.5
LineCenterY[1] := (CornerY[1]+CornerY[2])*0.5
LineCenterX[1] := (CornerX[1]+CornerX[2])*0.5
LineCenterY[2] := (CornerY[3]+CornerY[2])*0.5
LineCenterX[2] := (CornerX[3]+CornerX[2])*0.5
LineCenterY[3] := (CornerY[3]+CornerY[0])*0.5
LineCenterX[3] := (CornerX[3]+CornerX[0])*0.5
draw_rectangle2 (3600, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
get_rectangle2_points(Row, Column,Phi, Length1, Length2,CornerY,CornerX,LineCenterY,LineCenterX)
select_min_max_length_contour(Contours:MinLengthContour,MinLengthContour, MaxLengthContour)
gen_empty_obj(MaxLengthContour)
select_obj(Contours, ObjectSelected, i)
length_xld(ObjectSelected, Length)
select_obj(Contours, MaxLengthContour, Max_Index)
select_obj(Contours, MinLengthContour, Min_Index)
edges_sub_pix (Image, Edges, 'canny', 1, 20, 40)
write_image(Image,FileFormat,0,OriPath)
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
disp_message (WindowHandle, 'OK', 'window', 12, 12, 'green', 'true')
Index:=strrchr(ResultPath,'.')