zw版【转发·台湾nvp系列Delphi例程】HALCON color_fuses2

zw版【转发·台湾nvp系列Delphi例程】HALCON color_fuses2

 

 

 


procedure TForm1.Button1Click(Sender: TObject);
var
w, h : OleVariant;
hv_Fuse, hv_i : Integer;
begin
ho_Image.ReadImage(Tuple.TupleAdd('color/color_fuses_0', hv_Count));
w := ho_Image.GetImageSize(h);
hv_WH.SetPart(0, 0, h - 1, w - 1);
hv_WH.DispObj(ho_Image as IHObjectX);
hv_WH.SetTposition(12, 512);
hv_WH.WriteString(Tuple.TupleAdd(Tuple.TupleAdd('color/color_fuses0', hv_Count), '.png'));

ho_Red := ho_Image.Decompose3(ho_Green, ho_Blue);
ho_Hue := ho_Red.TransFromRgb(ho_Green, ho_Blue, ho_Saturation, ho_Intensity, 'hsv');
ho_Saturated := ho_Saturation.Threshold(60, 255);
ho_HueSaturated := ho_Hue.ReduceDomain(ho_Saturated);
for hv_Fuse := 0 to Tuple.TupleSub(Tuple.TupleLength(hv_FuseTypes), 1) do
begin
ho_CurrentFuse := ho_HueSaturated.Threshold(Tuple.TupleSelect(hv_HueRanges, Tuple.TupleMult(hv_Fuse, 2)), Tuple.TupleSelect(hv_HueRanges, Tuple.TupleAdd(Tuple.TupleMult(hv_Fuse, 2), 1)));
ho_CurrentFuseConn := ho_CurrentFuse.Connection;
ho_CurrentFuseFill:= ho_CurrentFuseConn.FillUp;
ho_CurrentFuseSel := ho_CurrentFuseFill.SelectShape('area', 'and', 6000, 20000);
hv_FuseArea := ho_CurrentFuseSel.AreaCenter(hv_Row1, hv_Column1);
hv_WH.SetColor('magenta');
for hv_i := 0 to Tuple.TupleSub(Tuple.TupleLength(hv_FuseArea), 1) do
begin
hv_WH.SetTposition(Tuple.TupleSelect(hv_Row1, hv_i), Tuple.TupleSelect(hv_Column1, hv_i));
hv_WH.WriteString(Tuple.TupleAdd(Tuple.TupleAdd(Tuple.TupleAdd(Tuple.TupleSelect(hv_FuseColors, hv_Fuse), ' '), Tuple.TupleSelect(hv_FuseTypes, hv_Fuse)), ' Ampere'));
end;
hv_WH.SetTposition(Tuple.TupleMult(24, Tuple.TupleAdd(hv_Fuse, 1)), 12);
hv_WH.SetColor('slate blue');
hv_WH.WriteString(Tuple.TupleAdd(Tuple.TupleAdd(Tuple.TupleSelect(hv_FuseColors, hv_Fuse), ' Fuses: '), Tuple.TupleLength(hv_FuseArea)));
end;
hv_Count := hv_Count + 1;
if (hv_Count > 4) then
hv_Count := 0;
end;

posted @ 2015-10-01 16:28  统领  阅读(486)  评论(0编辑  收藏  举报