// Main procedure private void action() { // Stack for temporary objects HObject[] OTemp = new HObject[20]; // Local iconic variables HObject ho_NewImage, ho_Image, ho_ImageSelected = null; HObject ho_Image1 = null; // Local control variables HTuple hv_AcqHandle = null, hv_ChannelCount = null; HTuple hv_Index = null, hv_Pointer = new HTuple(), hv_Type = new HTuple(); HTuple hv_Width = new HTuple(), hv_Height = new HTuple(); // Initialize local and output iconic variables HOperatorSet.GenEmptyObj(out ho_NewImage); HOperatorSet.GenEmptyObj(out ho_Image); HOperatorSet.GenEmptyObj(out ho_ImageSelected); HOperatorSet.GenEmptyObj(out ho_Image1); //Image Acquisition 01: Code generated by Image Acquisition 01 ho_NewImage.Dispose(); HOperatorSet.GenEmptyObj(out ho_NewImage); HOperatorSet.OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8, "rgb", -1, "false", "default", "[0] Integrated Camera", 0, -1, out hv_AcqHandle); HOperatorSet.GrabImageStart(hv_AcqHandle, -1); //Image Acquisition 01: Do something ho_Image.Dispose(); HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1); HOperatorSet.CountChannels(ho_Image, out hv_ChannelCount); HTuple end_val7 = hv_ChannelCount; HTuple step_val7 = 1; for (hv_Index = 1; hv_Index.Continue(end_val7, step_val7); hv_Index = hv_Index.TupleAdd(step_val7)) { ho_ImageSelected.Dispose(); HOperatorSet.AccessChannel(ho_Image, out ho_ImageSelected, hv_Index); HOperatorSet.GetImagePointer1(ho_ImageSelected, out hv_Pointer, out hv_Type, out hv_Width, out hv_Height); ho_Image1.Dispose(); HOperatorSet.GenImage1(out ho_Image1, "byte", hv_Width, hv_Height, hv_Pointer); { HObject ExpTmpOutVar_0; HOperatorSet.AppendChannel(ho_NewImage, ho_Image1, out ExpTmpOutVar_0); ho_NewImage.Dispose(); ho_NewImage = ExpTmpOutVar_0; } } HOperatorSet.CloseFramegrabber(hv_AcqHandle); ho_NewImage.Dispose(); ho_Image.Dispose(); ho_ImageSelected.Dispose(); ho_Image1.Dispose(); }
public static void scale_image_range(HObject ho_Image, out HObject ho_ImageScaled, HTuple hv_Min, HTuple hv_Max) { // Stack for temporary objects HObject[] OTemp = new HObject[20]; // Local iconic variables HObject ho_ImageSelected = null, ho_SelectedChannel = null; HObject ho_LowerRegion = null, ho_UpperRegion = null, ho_ImageSelectedScaled = null; // Local copy input parameter variables HObject ho_Image_COPY_INP_TMP; ho_Image_COPY_INP_TMP = ho_Image.CopyObj(1, -1); HTuple hv_LowerLimit = new HTuple(), hv_UpperLimit = new HTuple(); HTuple hv_Mult = null, hv_Add = null, hv_NumImages = null; HTuple hv_ImageIndex = null, hv_Channels = new HTuple(); HTuple hv_ChannelIndex = new HTuple(), hv_MinGray = new HTuple(); HTuple hv_MaxGray = new HTuple(), hv_Range = new HTuple(); HTuple hv_Max_COPY_INP_TMP = hv_Max.Clone(); HTuple hv_Min_COPY_INP_TMP = hv_Min.Clone(); // Initialize local and output iconic variables HOperatorSet.GenEmptyObj(out ho_ImageScaled); HOperatorSet.GenEmptyObj(out ho_ImageSelected); HOperatorSet.GenEmptyObj(out ho_SelectedChannel); HOperatorSet.GenEmptyObj(out ho_LowerRegion); HOperatorSet.GenEmptyObj(out ho_UpperRegion); HOperatorSet.GenEmptyObj(out ho_ImageSelectedScaled); try { if ((int)(new HTuple((new HTuple(hv_Min_COPY_INP_TMP.TupleLength())).TupleEqual( 2))) != 0) { hv_LowerLimit = hv_Min_COPY_INP_TMP.TupleSelect(1); hv_Min_COPY_INP_TMP = hv_Min_COPY_INP_TMP.TupleSelect(0); } else { hv_LowerLimit = 0.0; } if ((int)(new HTuple((new HTuple(hv_Max_COPY_INP_TMP.TupleLength())).TupleEqual( 2))) != 0) { hv_UpperLimit = hv_Max_COPY_INP_TMP.TupleSelect(1); hv_Max_COPY_INP_TMP = hv_Max_COPY_INP_TMP.TupleSelect(0); } else { hv_UpperLimit = 255.0; } // //Calculate scaling parameters. hv_Mult = (((hv_UpperLimit - hv_LowerLimit)).TupleReal()) / (hv_Max_COPY_INP_TMP - hv_Min_COPY_INP_TMP); hv_Add = ((-hv_Mult) * hv_Min_COPY_INP_TMP) + hv_LowerLimit; // //Scale image. { HObject ExpTmpOutVar_0; HOperatorSet.ScaleImage(ho_Image_COPY_INP_TMP, out ExpTmpOutVar_0, hv_Mult, hv_Add); ho_Image_COPY_INP_TMP.Dispose(); ho_Image_COPY_INP_TMP = ExpTmpOutVar_0; } // //Clip gray values if necessary. //This must be done for each image and channel separately. ho_ImageScaled.Dispose(); HOperatorSet.GenEmptyObj(out ho_ImageScaled); HOperatorSet.CountObj(ho_Image_COPY_INP_TMP, out hv_NumImages); HTuple end_val49 = hv_NumImages; HTuple step_val49 = 1; for (hv_ImageIndex = 1; hv_ImageIndex.Continue(end_val49, step_val49); hv_ImageIndex = hv_ImageIndex.TupleAdd(step_val49)) { ho_ImageSelected.Dispose(); HOperatorSet.SelectObj(ho_Image_COPY_INP_TMP, out ho_ImageSelected, hv_ImageIndex); HOperatorSet.CountChannels(ho_ImageSelected, out hv_Channels); HTuple end_val52 = hv_Channels; HTuple step_val52 = 1; for (hv_ChannelIndex = 1; hv_ChannelIndex.Continue(end_val52, step_val52); hv_ChannelIndex = hv_ChannelIndex.TupleAdd(step_val52)) { ho_SelectedChannel.Dispose(); HOperatorSet.AccessChannel(ho_ImageSelected, out ho_SelectedChannel, hv_ChannelIndex); HOperatorSet.MinMaxGray(ho_SelectedChannel, ho_SelectedChannel, 0, out hv_MinGray, out hv_MaxGray, out hv_Range); ho_LowerRegion.Dispose(); HOperatorSet.Threshold(ho_SelectedChannel, out ho_LowerRegion, ((hv_MinGray.TupleConcat( hv_LowerLimit))).TupleMin(), hv_LowerLimit); ho_UpperRegion.Dispose(); HOperatorSet.Threshold(ho_SelectedChannel, out ho_UpperRegion, hv_UpperLimit, ((hv_UpperLimit.TupleConcat(hv_MaxGray))).TupleMax()); { HObject ExpTmpOutVar_0; HOperatorSet.PaintRegion(ho_LowerRegion, ho_SelectedChannel, out ExpTmpOutVar_0, hv_LowerLimit, "fill"); ho_SelectedChannel.Dispose(); ho_SelectedChannel = ExpTmpOutVar_0; } { HObject ExpTmpOutVar_0; HOperatorSet.PaintRegion(ho_UpperRegion, ho_SelectedChannel, out ExpTmpOutVar_0, hv_UpperLimit, "fill"); ho_SelectedChannel.Dispose(); ho_SelectedChannel = ExpTmpOutVar_0; } if ((int)(new HTuple(hv_ChannelIndex.TupleEqual(1))) != 0) { ho_ImageSelectedScaled.Dispose(); HOperatorSet.CopyObj(ho_SelectedChannel, out ho_ImageSelectedScaled, 1, 1); } else { { HObject ExpTmpOutVar_0; HOperatorSet.AppendChannel(ho_ImageSelectedScaled, ho_SelectedChannel, out ExpTmpOutVar_0); ho_ImageSelectedScaled.Dispose(); ho_ImageSelectedScaled = ExpTmpOutVar_0; } } } { HObject ExpTmpOutVar_0; HOperatorSet.ConcatObj(ho_ImageScaled, ho_ImageSelectedScaled, out ExpTmpOutVar_0 ); ho_ImageScaled.Dispose(); ho_ImageScaled = ExpTmpOutVar_0; } } ho_Image_COPY_INP_TMP.Dispose(); ho_ImageSelected.Dispose(); ho_SelectedChannel.Dispose(); ho_LowerRegion.Dispose(); ho_UpperRegion.Dispose(); ho_ImageSelectedScaled.Dispose(); return; } catch (HalconException HDevExpDefaultException) { ho_Image_COPY_INP_TMP.Dispose(); ho_ImageSelected.Dispose(); ho_SelectedChannel.Dispose(); ho_LowerRegion.Dispose(); ho_UpperRegion.Dispose(); ho_ImageSelectedScaled.Dispose(); throw HDevExpDefaultException; } }