zoukankan      html  css  js  c++  java
  • haclon c# 联合

    haclon c# 联合

    • C:Program FilesMVTecHALCON-18.11-Steadyindotnet35
    • using HalconDotNet;
    • .net framework   (client Profile ) 精简版类库
    • D:2_notebook15-traninghalcon_mehalcon_me1inDebug
    • VS中选择工具箱项 --- 浏览到 debug 下面 halcon dll 文件
    • 相机接口 gige 千兆 网 gi 欧洲 usb 千兆 ……
    //
    // File generated by HDevelop for HALCON/.NET (C#) Version 18.11.1.1
    // Non-ASCII strings in this file are encoded in local-8-bit encoding (cp936).
    // 
    // Please note that non-ASCII characters in string constants are exported
    // as octal codes in order to guarantee that the strings are correctly
    // created on all systems, independent on any compiler settings.
    // 
    // Source files with different encoding should not be mixed in one project.
    //
    
    using HalconDotNet;
    
    public partial class HDevelopExport
    {
    #if !(NO_EXPORT_MAIN || NO_EXPORT_APP_MAIN)
      public HDevelopExport()
      {
        // Default settings used in HDevelop
        HOperatorSet.SetSystem("width", 512);
        HOperatorSet.SetSystem("height", 512);
        if (HalconAPI.isWindows)
          HOperatorSet.SetSystem("use_window_thread","true");
        action();
      }
    #endif
    
      // Procedures 
      // External procedures 
      // Chapter: Develop
      // Short Description: Open a new graphics window that preserves the aspect ratio of the given image. 
      public void dev_open_window_fit_image (HObject ho_Image, HTuple hv_Row, HTuple hv_Column, 
          HTuple hv_WidthLimit, HTuple hv_HeightLimit, out HTuple hv_WindowHandle)
      {
    
    
    
    
        // Local iconic variables 
    
        // Local control variables 
    
        HTuple hv_MinWidth = new HTuple(), hv_MaxWidth = new HTuple();
        HTuple hv_MinHeight = new HTuple(), hv_MaxHeight = new HTuple();
        HTuple hv_ResizeFactor = new HTuple(), hv_ImageWidth = new HTuple();
        HTuple hv_ImageHeight = new HTuple(), hv_TempWidth = new HTuple();
        HTuple hv_TempHeight = new HTuple(), hv_WindowWidth = new HTuple();
        HTuple hv_WindowHeight = new HTuple();
        // Initialize local and output iconic variables 
        hv_WindowHandle = new HTuple();
        try
        {
          //This procedure opens a new graphics window and adjusts the size
          //such that it fits into the limits specified by WidthLimit
          //and HeightLimit, but also maintains the correct image aspect ratio.
          //
          //If it is impossible to match the minimum and maximum extent requirements
          //at the same time (f.e. if the image is very long but narrow),
          //the maximum value gets a higher priority,
          //
          //Parse input tuple WidthLimit
          if ((int)((new HTuple((new HTuple(hv_WidthLimit.TupleLength())).TupleEqual(
              0))).TupleOr(new HTuple(hv_WidthLimit.TupleLess(0)))) != 0)
          {
            hv_MinWidth.Dispose();
            hv_MinWidth = 500;
            hv_MaxWidth.Dispose();
            hv_MaxWidth = 800;
          }
          else if ((int)(new HTuple((new HTuple(hv_WidthLimit.TupleLength())).TupleEqual(
              1))) != 0)
          {
            hv_MinWidth.Dispose();
            hv_MinWidth = 0;
            hv_MaxWidth.Dispose();
            hv_MaxWidth = new HTuple(hv_WidthLimit);
          }
          else
          {
            hv_MinWidth.Dispose();
            using (HDevDisposeHelper dh = new HDevDisposeHelper())
            {
            hv_MinWidth = hv_WidthLimit.TupleSelect(
                0);
            }
            hv_MaxWidth.Dispose();
            using (HDevDisposeHelper dh = new HDevDisposeHelper())
            {
            hv_MaxWidth = hv_WidthLimit.TupleSelect(
                1);
            }
          }
          //Parse input tuple HeightLimit
          if ((int)((new HTuple((new HTuple(hv_HeightLimit.TupleLength())).TupleEqual(
              0))).TupleOr(new HTuple(hv_HeightLimit.TupleLess(0)))) != 0)
          {
            hv_MinHeight.Dispose();
            hv_MinHeight = 400;
            hv_MaxHeight.Dispose();
            hv_MaxHeight = 600;
          }
          else if ((int)(new HTuple((new HTuple(hv_HeightLimit.TupleLength())).TupleEqual(
              1))) != 0)
          {
            hv_MinHeight.Dispose();
            hv_MinHeight = 0;
            hv_MaxHeight.Dispose();
            hv_MaxHeight = new HTuple(hv_HeightLimit);
          }
          else
          {
            hv_MinHeight.Dispose();
            using (HDevDisposeHelper dh = new HDevDisposeHelper())
            {
            hv_MinHeight = hv_HeightLimit.TupleSelect(
                0);
            }
            hv_MaxHeight.Dispose();
            using (HDevDisposeHelper dh = new HDevDisposeHelper())
            {
            hv_MaxHeight = hv_HeightLimit.TupleSelect(
                1);
            }
          }
          //
          //Test, if window size has to be changed.
          hv_ResizeFactor.Dispose();
          hv_ResizeFactor = 1;
          hv_ImageWidth.Dispose();hv_ImageHeight.Dispose();
          HOperatorSet.GetImageSize(ho_Image, out hv_ImageWidth, out hv_ImageHeight);
          //First, expand window to the minimum extents (if necessary).
          if ((int)((new HTuple(hv_MinWidth.TupleGreater(hv_ImageWidth))).TupleOr(new HTuple(hv_MinHeight.TupleGreater(
              hv_ImageHeight)))) != 0)
          {
            hv_ResizeFactor.Dispose();
            using (HDevDisposeHelper dh = new HDevDisposeHelper())
            {
            hv_ResizeFactor = (((((hv_MinWidth.TupleReal()
                )/hv_ImageWidth)).TupleConcat((hv_MinHeight.TupleReal())/hv_ImageHeight))).TupleMax()
                ;
            }
          }
          hv_TempWidth.Dispose();
          using (HDevDisposeHelper dh = new HDevDisposeHelper())
          {
          hv_TempWidth = hv_ImageWidth*hv_ResizeFactor;
          }
          hv_TempHeight.Dispose();
          using (HDevDisposeHelper dh = new HDevDisposeHelper())
          {
          hv_TempHeight = hv_ImageHeight*hv_ResizeFactor;
          }
          //Then, shrink window to maximum extents (if necessary).
          if ((int)((new HTuple(hv_MaxWidth.TupleLess(hv_TempWidth))).TupleOr(new HTuple(hv_MaxHeight.TupleLess(
              hv_TempHeight)))) != 0)
          {
            using (HDevDisposeHelper dh = new HDevDisposeHelper())
            {
            {
            HTuple 
              ExpTmpLocalVar_ResizeFactor = hv_ResizeFactor*((((((hv_MaxWidth.TupleReal()
                )/hv_TempWidth)).TupleConcat((hv_MaxHeight.TupleReal())/hv_TempHeight))).TupleMin()
                );
            hv_ResizeFactor.Dispose();
            hv_ResizeFactor = ExpTmpLocalVar_ResizeFactor;
            }
            }
          }
          hv_WindowWidth.Dispose();
          using (HDevDisposeHelper dh = new HDevDisposeHelper())
          {
          hv_WindowWidth = hv_ImageWidth*hv_ResizeFactor;
          }
          hv_WindowHeight.Dispose();
          using (HDevDisposeHelper dh = new HDevDisposeHelper())
          {
          hv_WindowHeight = hv_ImageHeight*hv_ResizeFactor;
          }
          //Resize window
          HOperatorSet.SetWindowAttr("background_color","black");
          HOperatorSet.OpenWindow(hv_Row,hv_Column,hv_WindowWidth,hv_WindowHeight,0,"visible","",out hv_WindowHandle);
          HDevWindowStack.Push(hv_WindowHandle);
          if (HDevWindowStack.IsOpen())
          {
            using (HDevDisposeHelper dh = new HDevDisposeHelper())
            {
            HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_ImageHeight-1, 
                hv_ImageWidth-1);
            }
          }
    
          hv_MinWidth.Dispose();
          hv_MaxWidth.Dispose();
          hv_MinHeight.Dispose();
          hv_MaxHeight.Dispose();
          hv_ResizeFactor.Dispose();
          hv_ImageWidth.Dispose();
          hv_ImageHeight.Dispose();
          hv_TempWidth.Dispose();
          hv_TempHeight.Dispose();
          hv_WindowWidth.Dispose();
          hv_WindowHeight.Dispose();
    
          return;
        }
        catch (HalconException HDevExpDefaultException)
        {
    
          hv_MinWidth.Dispose();
          hv_MaxWidth.Dispose();
          hv_MinHeight.Dispose();
          hv_MaxHeight.Dispose();
          hv_ResizeFactor.Dispose();
          hv_ImageWidth.Dispose();
          hv_ImageHeight.Dispose();
          hv_TempWidth.Dispose();
          hv_TempHeight.Dispose();
          hv_WindowWidth.Dispose();
          hv_WindowHeight.Dispose();
    
          throw HDevExpDefaultException;
        }
      }
    
      // Chapter: Graphics / Text
      // Short Description: This procedure writes a text message. 
      public void disp_message (HTuple hv_WindowHandle, HTuple hv_String, HTuple hv_CoordSystem, 
          HTuple hv_Row, HTuple hv_Column, HTuple hv_Color, HTuple hv_Box)
      {
    
    
    
        // Local iconic variables 
    
        // Local control variables 
    
        HTuple hv_GenParamName = new HTuple(), hv_GenParamValue = new HTuple();
        HTuple   hv_Color_COPY_INP_TMP = new HTuple(hv_Color);
        HTuple   hv_Column_COPY_INP_TMP = new HTuple(hv_Column);
        HTuple   hv_CoordSystem_COPY_INP_TMP = new HTuple(hv_CoordSystem);
        HTuple   hv_Row_COPY_INP_TMP = new HTuple(hv_Row);
    
        // Initialize local and output iconic variables 
        try
        {
          //This procedure displays text in a graphics window.
          //
          //Input parameters:
          //WindowHandle: The WindowHandle of the graphics window, where
          //   the message should be displayed
          //String: A tuple of strings containing the text message to be displayed
          //CoordSystem: If set to 'window', the text position is given
          //   with respect to the window coordinate system.
          //   If set to 'image', image coordinates are used.
          //   (This may be useful in zoomed images.)
          //Row: The row coordinate of the desired text position
          //   A tuple of values is allowed to display text at different
          //   positions.
          //Column: The column coordinate of the desired text position
          //   A tuple of values is allowed to display text at different
          //   positions.
          //Color: defines the color of the text as string.
          //   If set to [], '' or 'auto' the currently set color is used.
          //   If a tuple of strings is passed, the colors are used cyclically...
          //   - if |Row| == |Column| == 1: for each new textline
          //   = else for each text position.
          //Box: If Box[0] is set to 'true', the text is written within an orange box.
          //     If set to' false', no box is displayed.
          //     If set to a color string (e.g. 'white', '#FF00CC', etc.),
          //       the text is written in a box of that color.
          //     An optional second value for Box (Box[1]) controls if a shadow is displayed:
          //       'true' -> display a shadow in a default color
          //       'false' -> display no shadow
          //       otherwise -> use given string as color string for the shadow color
          //
          //It is possible to display multiple text strings in a single call.
          //In this case, some restrictions apply:
          //- Multiple text positions can be defined by specifying a tuple
          //  with multiple Row and/or Column coordinates, i.e.:
          //  - |Row| == n, |Column| == n
          //  - |Row| == n, |Column| == 1
          //  - |Row| == 1, |Column| == n
          //- If |Row| == |Column| == 1,
          //  each element of String is display in a new textline.
          //- If multiple positions or specified, the number of Strings
          //  must match the number of positions, i.e.:
          //  - Either |String| == n (each string is displayed at the
          //                          corresponding position),
          //  - or     |String| == 1 (The string is displayed n times).
          //
          //
          //Convert the parameters for disp_text.
          if ((int)((new HTuple(hv_Row_COPY_INP_TMP.TupleEqual(new HTuple()))).TupleOr(
              new HTuple(hv_Column_COPY_INP_TMP.TupleEqual(new HTuple())))) != 0)
          {
    
            hv_Color_COPY_INP_TMP.Dispose();
            hv_Column_COPY_INP_TMP.Dispose();
            hv_CoordSystem_COPY_INP_TMP.Dispose();
            hv_Row_COPY_INP_TMP.Dispose();
            hv_GenParamName.Dispose();
            hv_GenParamValue.Dispose();
    
            return;
          }
          if ((int)(new HTuple(hv_Row_COPY_INP_TMP.TupleEqual(-1))) != 0)
          {
            hv_Row_COPY_INP_TMP.Dispose();
            hv_Row_COPY_INP_TMP = 12;
          }
          if ((int)(new HTuple(hv_Column_COPY_INP_TMP.TupleEqual(-1))) != 0)
          {
            hv_Column_COPY_INP_TMP.Dispose();
            hv_Column_COPY_INP_TMP = 12;
          }
          //
          //Convert the parameter Box to generic parameters.
          hv_GenParamName.Dispose();
          hv_GenParamName = new HTuple();
          hv_GenParamValue.Dispose();
          hv_GenParamValue = new HTuple();
          if ((int)(new HTuple((new HTuple(hv_Box.TupleLength())).TupleGreater(0))) != 0)
          {
            if ((int)(new HTuple(((hv_Box.TupleSelect(0))).TupleEqual("false"))) != 0)
            {
              //Display no box
              using (HDevDisposeHelper dh = new HDevDisposeHelper())
              {
              {
              HTuple 
                ExpTmpLocalVar_GenParamName = hv_GenParamName.TupleConcat(
                  "box");
              hv_GenParamName.Dispose();
              hv_GenParamName = ExpTmpLocalVar_GenParamName;
              }
              }
              using (HDevDisposeHelper dh = new HDevDisposeHelper())
              {
              {
              HTuple 
                ExpTmpLocalVar_GenParamValue = hv_GenParamValue.TupleConcat(
                  "false");
              hv_GenParamValue.Dispose();
              hv_GenParamValue = ExpTmpLocalVar_GenParamValue;
              }
              }
            }
            else if ((int)(new HTuple(((hv_Box.TupleSelect(0))).TupleNotEqual(
                "true"))) != 0)
            {
              //Set a color other than the default.
              using (HDevDisposeHelper dh = new HDevDisposeHelper())
              {
              {
              HTuple 
                ExpTmpLocalVar_GenParamName = hv_GenParamName.TupleConcat(
                  "box_color");
              hv_GenParamName.Dispose();
              hv_GenParamName = ExpTmpLocalVar_GenParamName;
              }
              }
              using (HDevDisposeHelper dh = new HDevDisposeHelper())
              {
              {
              HTuple 
                ExpTmpLocalVar_GenParamValue = hv_GenParamValue.TupleConcat(
                  hv_Box.TupleSelect(0));
              hv_GenParamValue.Dispose();
              hv_GenParamValue = ExpTmpLocalVar_GenParamValue;
              }
              }
            }
          }
          if ((int)(new HTuple((new HTuple(hv_Box.TupleLength())).TupleGreater(1))) != 0)
          {
            if ((int)(new HTuple(((hv_Box.TupleSelect(1))).TupleEqual("false"))) != 0)
            {
              //Display no shadow.
              using (HDevDisposeHelper dh = new HDevDisposeHelper())
              {
              {
              HTuple 
                ExpTmpLocalVar_GenParamName = hv_GenParamName.TupleConcat(
                  "shadow");
              hv_GenParamName.Dispose();
              hv_GenParamName = ExpTmpLocalVar_GenParamName;
              }
              }
              using (HDevDisposeHelper dh = new HDevDisposeHelper())
              {
              {
              HTuple 
                ExpTmpLocalVar_GenParamValue = hv_GenParamValue.TupleConcat(
                  "false");
              hv_GenParamValue.Dispose();
              hv_GenParamValue = ExpTmpLocalVar_GenParamValue;
              }
              }
            }
            else if ((int)(new HTuple(((hv_Box.TupleSelect(1))).TupleNotEqual(
                "true"))) != 0)
            {
              //Set a shadow color other than the default.
              using (HDevDisposeHelper dh = new HDevDisposeHelper())
              {
              {
              HTuple 
                ExpTmpLocalVar_GenParamName = hv_GenParamName.TupleConcat(
                  "shadow_color");
              hv_GenParamName.Dispose();
              hv_GenParamName = ExpTmpLocalVar_GenParamName;
              }
              }
              using (HDevDisposeHelper dh = new HDevDisposeHelper())
              {
              {
              HTuple 
                ExpTmpLocalVar_GenParamValue = hv_GenParamValue.TupleConcat(
                  hv_Box.TupleSelect(1));
              hv_GenParamValue.Dispose();
              hv_GenParamValue = ExpTmpLocalVar_GenParamValue;
              }
              }
            }
          }
          //Restore default CoordSystem behavior.
          if ((int)(new HTuple(hv_CoordSystem_COPY_INP_TMP.TupleNotEqual("window"))) != 0)
          {
            hv_CoordSystem_COPY_INP_TMP.Dispose();
            hv_CoordSystem_COPY_INP_TMP = "image";
          }
          //
          if ((int)(new HTuple(hv_Color_COPY_INP_TMP.TupleEqual(""))) != 0)
          {
            //disp_text does not accept an empty string for Color.
            hv_Color_COPY_INP_TMP.Dispose();
            hv_Color_COPY_INP_TMP = new HTuple();
          }
          //
          HOperatorSet.DispText(hv_WindowHandle, hv_String, hv_CoordSystem_COPY_INP_TMP, 
              hv_Row_COPY_INP_TMP, hv_Column_COPY_INP_TMP, hv_Color_COPY_INP_TMP, hv_GenParamName, 
              hv_GenParamValue);
    
          hv_Color_COPY_INP_TMP.Dispose();
          hv_Column_COPY_INP_TMP.Dispose();
          hv_CoordSystem_COPY_INP_TMP.Dispose();
          hv_Row_COPY_INP_TMP.Dispose();
          hv_GenParamName.Dispose();
          hv_GenParamValue.Dispose();
    
          return;
        }
        catch (HalconException HDevExpDefaultException)
        {
    
          hv_Color_COPY_INP_TMP.Dispose();
          hv_Column_COPY_INP_TMP.Dispose();
          hv_CoordSystem_COPY_INP_TMP.Dispose();
          hv_Row_COPY_INP_TMP.Dispose();
          hv_GenParamName.Dispose();
          hv_GenParamValue.Dispose();
    
          throw HDevExpDefaultException;
        }
      }
    
      // Chapter: Graphics / Text
      // Short Description: Set font independent of OS 
      public void set_display_font (HTuple hv_WindowHandle, HTuple hv_Size, HTuple hv_Font, 
          HTuple hv_Bold, HTuple hv_Slant)
      {
    
    
    
        // Local iconic variables 
    
        // Local control variables 
    
        HTuple hv_OS = new HTuple(), hv_Fonts = new HTuple();
        HTuple hv_Style = new HTuple(), hv_Exception = new HTuple();
        HTuple hv_AvailableFonts = new HTuple(), hv_Fdx = new HTuple();
        HTuple hv_Indices = new HTuple();
        HTuple   hv_Font_COPY_INP_TMP = new HTuple(hv_Font);
        HTuple   hv_Size_COPY_INP_TMP = new HTuple(hv_Size);
    
        // Initialize local and output iconic variables 
        try
        {
          //This procedure sets the text font of the current window with
          //the specified attributes.
          //
          //Input parameters:
          //WindowHandle: The graphics window for which the font will be set
          //Size: The font size. If Size=-1, the default of 16 is used.
          //Bold: If set to 'true', a bold font is used
          //Slant: If set to 'true', a slanted font is used
          //
          hv_OS.Dispose();
          HOperatorSet.GetSystem("operating_system", out hv_OS);
          if ((int)((new HTuple(hv_Size_COPY_INP_TMP.TupleEqual(new HTuple()))).TupleOr(
              new HTuple(hv_Size_COPY_INP_TMP.TupleEqual(-1)))) != 0)
          {
            hv_Size_COPY_INP_TMP.Dispose();
            hv_Size_COPY_INP_TMP = 16;
          }
          if ((int)(new HTuple(((hv_OS.TupleSubstr(0,2))).TupleEqual("Win"))) != 0)
          {
            //Restore previous behaviour
            using (HDevDisposeHelper dh = new HDevDisposeHelper())
            {
            {
            HTuple 
              ExpTmpLocalVar_Size = ((1.13677*hv_Size_COPY_INP_TMP)).TupleInt()
                ;
            hv_Size_COPY_INP_TMP.Dispose();
            hv_Size_COPY_INP_TMP = ExpTmpLocalVar_Size;
            }
            }
          }
          else
          {
            using (HDevDisposeHelper dh = new HDevDisposeHelper())
            {
            {
            HTuple 
              ExpTmpLocalVar_Size = hv_Size_COPY_INP_TMP.TupleInt()
                ;
            hv_Size_COPY_INP_TMP.Dispose();
            hv_Size_COPY_INP_TMP = ExpTmpLocalVar_Size;
            }
            }
          }
          if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("Courier"))) != 0)
          {
            hv_Fonts.Dispose();
            hv_Fonts = new HTuple();
            hv_Fonts[0] = "Courier";
            hv_Fonts[1] = "Courier 10 Pitch";
            hv_Fonts[2] = "Courier New";
            hv_Fonts[3] = "CourierNew";
            hv_Fonts[4] = "Liberation Mono";
          }
          else if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("mono"))) != 0)
          {
            hv_Fonts.Dispose();
            hv_Fonts = new HTuple();
            hv_Fonts[0] = "Consolas";
            hv_Fonts[1] = "Menlo";
            hv_Fonts[2] = "Courier";
            hv_Fonts[3] = "Courier 10 Pitch";
            hv_Fonts[4] = "FreeMono";
            hv_Fonts[5] = "Liberation Mono";
          }
          else if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("sans"))) != 0)
          {
            hv_Fonts.Dispose();
            hv_Fonts = new HTuple();
            hv_Fonts[0] = "Luxi Sans";
            hv_Fonts[1] = "DejaVu Sans";
            hv_Fonts[2] = "FreeSans";
            hv_Fonts[3] = "Arial";
            hv_Fonts[4] = "Liberation Sans";
          }
          else if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("serif"))) != 0)
          {
            hv_Fonts.Dispose();
            hv_Fonts = new HTuple();
            hv_Fonts[0] = "Times New Roman";
            hv_Fonts[1] = "Luxi Serif";
            hv_Fonts[2] = "DejaVu Serif";
            hv_Fonts[3] = "FreeSerif";
            hv_Fonts[4] = "Utopia";
            hv_Fonts[5] = "Liberation Serif";
          }
          else
          {
            hv_Fonts.Dispose();
            hv_Fonts = new HTuple(hv_Font_COPY_INP_TMP);
          }
          hv_Style.Dispose();
          hv_Style = "";
          if ((int)(new HTuple(hv_Bold.TupleEqual("true"))) != 0)
          {
            using (HDevDisposeHelper dh = new HDevDisposeHelper())
            {
            {
            HTuple 
              ExpTmpLocalVar_Style = hv_Style+"Bold";
            hv_Style.Dispose();
            hv_Style = ExpTmpLocalVar_Style;
            }
            }
          }
          else if ((int)(new HTuple(hv_Bold.TupleNotEqual("false"))) != 0)
          {
            hv_Exception.Dispose();
            hv_Exception = "Wrong value of control parameter Bold";
            throw new HalconException(hv_Exception);
          }
          if ((int)(new HTuple(hv_Slant.TupleEqual("true"))) != 0)
          {
            using (HDevDisposeHelper dh = new HDevDisposeHelper())
            {
            {
            HTuple 
              ExpTmpLocalVar_Style = hv_Style+"Italic";
            hv_Style.Dispose();
            hv_Style = ExpTmpLocalVar_Style;
            }
            }
          }
          else if ((int)(new HTuple(hv_Slant.TupleNotEqual("false"))) != 0)
          {
            hv_Exception.Dispose();
            hv_Exception = "Wrong value of control parameter Slant";
            throw new HalconException(hv_Exception);
          }
          if ((int)(new HTuple(hv_Style.TupleEqual(""))) != 0)
          {
            hv_Style.Dispose();
            hv_Style = "Normal";
          }
          hv_AvailableFonts.Dispose();
          HOperatorSet.QueryFont(hv_WindowHandle, out hv_AvailableFonts);
          hv_Font_COPY_INP_TMP.Dispose();
          hv_Font_COPY_INP_TMP = "";
          for (hv_Fdx=0; (int)hv_Fdx<=(int)((new HTuple(hv_Fonts.TupleLength()))-1); hv_Fdx = (int)hv_Fdx + 1)
          {
            hv_Indices.Dispose();
            using (HDevDisposeHelper dh = new HDevDisposeHelper())
            {
            hv_Indices = hv_AvailableFonts.TupleFind(
                hv_Fonts.TupleSelect(hv_Fdx));
            }
            if ((int)(new HTuple((new HTuple(hv_Indices.TupleLength())).TupleGreater(
                0))) != 0)
            {
              if ((int)(new HTuple(((hv_Indices.TupleSelect(0))).TupleGreaterEqual(0))) != 0)
              {
                hv_Font_COPY_INP_TMP.Dispose();
                using (HDevDisposeHelper dh = new HDevDisposeHelper())
                {
                hv_Font_COPY_INP_TMP = hv_Fonts.TupleSelect(
                    hv_Fdx);
                }
                break;
              }
            }
          }
          if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual(""))) != 0)
          {
            throw new HalconException("Wrong value of control parameter Font");
          }
          using (HDevDisposeHelper dh = new HDevDisposeHelper())
          {
          {
          HTuple 
            ExpTmpLocalVar_Font = (((hv_Font_COPY_INP_TMP+"-")+hv_Style)+"-")+hv_Size_COPY_INP_TMP;
          hv_Font_COPY_INP_TMP.Dispose();
          hv_Font_COPY_INP_TMP = ExpTmpLocalVar_Font;
          }
          }
          HOperatorSet.SetFont(hv_WindowHandle, hv_Font_COPY_INP_TMP);
    
          hv_Font_COPY_INP_TMP.Dispose();
          hv_Size_COPY_INP_TMP.Dispose();
          hv_OS.Dispose();
          hv_Fonts.Dispose();
          hv_Style.Dispose();
          hv_Exception.Dispose();
          hv_AvailableFonts.Dispose();
          hv_Fdx.Dispose();
          hv_Indices.Dispose();
    
          return;
        }
        catch (HalconException HDevExpDefaultException)
        {
    
          hv_Font_COPY_INP_TMP.Dispose();
          hv_Size_COPY_INP_TMP.Dispose();
          hv_OS.Dispose();
          hv_Fonts.Dispose();
          hv_Style.Dispose();
          hv_Exception.Dispose();
          hv_AvailableFonts.Dispose();
          hv_Fdx.Dispose();
          hv_Indices.Dispose();
    
          throw HDevExpDefaultException;
        }
      }
    
    #if !NO_EXPORT_MAIN
      // Main procedure 
      private void action()
      {
    
    
        // Local iconic variables 
    
        HObject ho_Image=null, ho_ImageMean=null, ho_RegionDynThresh=null;
        HObject ho_ConnectedRegions=null, ho_ErrorRegions=null;
    
        // Local control variables 
    
        HTuple hv_AcqHandle = new HTuple(), hv_Width = new HTuple();
        HTuple hv_Height = new HTuple(), hv_WindowHandle = new HTuple();
        HTuple hv_NumErrors = new HTuple();
        // Initialize local and output iconic variables 
        HOperatorSet.GenEmptyObj(out ho_Image);
        HOperatorSet.GenEmptyObj(out ho_ImageMean);
        HOperatorSet.GenEmptyObj(out ho_RegionDynThresh);
        HOperatorSet.GenEmptyObj(out ho_ConnectedRegions);
        HOperatorSet.GenEmptyObj(out ho_ErrorRegions);
        try
        {
    
          //Image Acquisition 02: Code generated by Image Acquisition 02
          hv_AcqHandle.Dispose();
          HOperatorSet.OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8, 
              "rgb", -1, "false", "default", "[0]", 0, -1, out hv_AcqHandle);
          HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
          //while (true)
            ho_Image.Dispose();
            HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
            //Image Acquisition 02: Do something
          //endwhile
          HOperatorSet.CloseFramegrabber(hv_AcqHandle);
    
    
    
    
          //关闭程序计数器,图形变量更新,窗口图形更新
          // dev_update_window(...); only in hdevelop
    
          //读取一张图像
          //read_image (Image, 'plastic_Vision/plastic_Vision_01')
    
          //关闭打开的窗口
          if (HDevWindowStack.IsOpen())
          {
            HOperatorSet.CloseWindow(HDevWindowStack.Pop());
          }
    
          //获取图像大小
          hv_Width.Dispose();hv_Height.Dispose();
          HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
    
          //创建一个新窗口
          hv_WindowHandle.Dispose();
          dev_open_window_fit_image(ho_Image, 0, 0, hv_Width, hv_Height, out hv_WindowHandle);
    
    
          //设置字体信息:字体大小为16,字体为mono,粗体,斜体
          set_display_font(hv_WindowHandle, 18, "mono", "true", "false");
    
          //设置区域的填充方式
          if (HDevWindowStack.IsOpen())
          {
            HOperatorSet.SetDraw(HDevWindowStack.GetActive(), "margin");
          }
    
          //设置线宽度
          if (HDevWindowStack.IsOpen())
          {
            HOperatorSet.SetLineWidth(HDevWindowStack.GetActive(), 3);
          }
    
    
          //for J := 1 to 14 by 1
            //读取一张图像
            //read_image (Image, 'plastic_Vision/plastic_Vision_' + J$'02')
    
            //均值滤波
            ho_ImageMean.Dispose();
            HOperatorSet.MeanImage(ho_Image, out ho_ImageMean, 49, 49);
    
            //局部阈值分割图像
            ho_RegionDynThresh.Dispose();
            HOperatorSet.DynThreshold(ho_Image, ho_ImageMean, out ho_RegionDynThresh, 
                5, "dark");
    
            //对分割后的区域进行连通处理
            ho_ConnectedRegions.Dispose();
            HOperatorSet.Connection(ho_RegionDynThresh, out ho_ConnectedRegions);
    
            //过滤出缺陷网孔区域
            ho_ErrorRegions.Dispose();
            HOperatorSet.SelectShape(ho_ConnectedRegions, out ho_ErrorRegions, "area", 
                "and", 500, 99999);
    
            //统计出缺陷网孔的数目
            hv_NumErrors.Dispose();
            HOperatorSet.CountObj(ho_ErrorRegions, out hv_NumErrors);
    
            //显示图像
            if (HDevWindowStack.IsOpen())
            {
              HOperatorSet.DispObj(ho_Image, HDevWindowStack.GetActive());
            }
    
            //设置对象的显示颜色
            if (HDevWindowStack.IsOpen())
            {
              HOperatorSet.SetColor(HDevWindowStack.GetActive(), "red");
            }
    
            //显示缺陷网孔
            if (HDevWindowStack.IsOpen())
            {
              HOperatorSet.DispObj(ho_ErrorRegions, HDevWindowStack.GetActive());
            }
    
            if ((int)(new HTuple(hv_NumErrors.TupleGreater(0))) != 0)
            {
              //显示产品NG
              disp_message(hv_WindowHandle, "Vision not OK", "window", 24, 12, "black", 
                  "true");
            }
            else
            {
              //显示产品OK
              disp_message(hv_WindowHandle, "Vision OK", "window", 24, 12, "black", "true");
            }
    
            // stop(...); only in hdevelop
    
          //endfor
        }
        catch (HalconException HDevExpDefaultException)
        {
          ho_Image.Dispose();
          ho_ImageMean.Dispose();
          ho_RegionDynThresh.Dispose();
          ho_ConnectedRegions.Dispose();
          ho_ErrorRegions.Dispose();
    
          hv_AcqHandle.Dispose();
          hv_Width.Dispose();
          hv_Height.Dispose();
          hv_WindowHandle.Dispose();
          hv_NumErrors.Dispose();
    
          throw HDevExpDefaultException;
        }
        ho_Image.Dispose();
        ho_ImageMean.Dispose();
        ho_RegionDynThresh.Dispose();
        ho_ConnectedRegions.Dispose();
        ho_ErrorRegions.Dispose();
    
        hv_AcqHandle.Dispose();
        hv_Width.Dispose();
        hv_Height.Dispose();
        hv_WindowHandle.Dispose();
        hv_NumErrors.Dispose();
    
      }
    
    #endif
    
    
    }
    #if !(NO_EXPORT_MAIN || NO_EXPORT_APP_MAIN)
    public class HDevelopExportApp
    {
      static void Main(string[] args)
      {
        new HDevelopExport();
      }
    }
    #endif
    

      

  • 相关阅读:
    [python第七课]字符串和常用数据结构
    深浅拷贝与循环引用问题
    CSS居中总结
    CSS布局总结
    跨域
    函数节流与防抖
    浏览器渲染原理及渲染阻塞
    进程与线程
    前端之网络攻击
    前端之缓存
  • 原文地址:https://www.cnblogs.com/2eggs/p/13577002.html
Copyright © 2011-2022 走看看