• halcon与C#混合编程(二)读取并处理图片


    示例:读取并处理图片

    halcon源码:

       1: *读取图片
       2: read_image(Image,'D:/MyFile/C#/HalconCsExample/示例图片.jpg')
       3: get_image_size(Image,Width,Height)
       4:  
       5: *图像处理
       6: rgb1_to_gray(Image,GrayImage)

    导出的代码(ImagePro):

       1: //
       2: //  File generated by HDevelop for HALCON/DOTNET (C#) Version 10.0
       3: //
       4: //  This file is intended to be used with the HDevelopTemplate or
       5: //  HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c#
       6:  
       7: using System;
       8: using HalconDotNet;
       9:  
      10: public partial class HDevelopExport
      11: {
      12:   public HTuple hv_ExpDefaultWinHandle;
      13:  
      14:   // Main procedure 
      15:   private void action()
      16:   {
      17:  
      18:     // Local iconic variables 
      19:  
      20:     HObject ho_Image, ho_GrayImage;
      21:  
      22:  
      23:     // Local control variables 
      24:  
      25:     HTuple hv_Width, hv_Height;
      26:  
      27:     // Initialize local and output iconic variables 
      28:     HOperatorSet.GenEmptyObj(out ho_Image);
      29:     HOperatorSet.GenEmptyObj(out ho_GrayImage);
      30:  
      31:     //读取图片
      32:     //dev_close_window(...);
      33:     ho_Image.Dispose();
      34:     HOperatorSet.ReadImage(out ho_Image, "D:/MyFile/C#/HalconCsExample/示例图片.jpg");
      35:     HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
      36:     //dev_open_window(...);
      37:     HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle);
      38:  
      39:     //图像处理
      40:     ho_GrayImage.Dispose();
      41:     HOperatorSet.Rgb1ToGray(ho_Image, out ho_GrayImage);
      42:     HOperatorSet.DispObj(ho_GrayImage, hv_ExpDefaultWinHandle);
      43:  
      44:     ho_Image.Dispose();
      45:     ho_GrayImage.Dispose();
      46:  
      47:   }
      48:  
      49:   public void InitHalcon()
      50:   {
      51:     // Default settings used in HDevelop 
      52:     HOperatorSet.SetSystem("do_low_error", "false");
      53:   }
      54:  
      55:   public void RunHalcon(HTuple Window)
      56:   {
      57:     hv_ExpDefaultWinHandle = Window;
      58:     action();
      59:   }
      60:  
      61: }
      62:  
    C#工程:
       1: using System;
       2: using System.Collections.Generic;
       3: using System.ComponentModel;
       4: using System.Data;
       5: using System.Drawing;
       6: using System.Linq;
       7: using System.Text;
       8: using System.Windows.Forms;
       9:  
      10: using HalconDotNet; //添加引用
      11:  
      12: namespace HalconCsExample
      13: {
      14:     public partial class Form1 : Form
      15:     {
      16:         //增加代码:
      17:         HDevelopExport HD = new HDevelopExport();
      18:         string ImagePath;
      19:  
      20:         public Form1()
      21:         {
      22:             InitializeComponent();
      23:             this.btnImagePro.Enabled = false;
      24:         }
      25:  
      26:         private void btnReadImage_Click(object sender, EventArgs e)
      27:         {
      28:             openFileDialog1.Filter = "JPEG文件|*.jpg*|BMP文件|*.bmp*|TIFF文件|*.tiff*";
      29:             openFileDialog1.RestoreDirectory = true;
      30:             openFileDialog1.FilterIndex = 1;
      31:             if (openFileDialog1.ShowDialog() == DialogResult.OK)
      32:             {
      33:                 ImagePath = openFileDialog1.FileName;
      34:                 HD.ReadImage(hWindowControl1.HalconWindow, ImagePath);
      35:                 this.btnImagePro.Enabled = true;
      36:             }   
      37:         }
      38:  
      39:         private void btnImagePro_Click(object sender, EventArgs e)
      40:         {
      41:             HD.ImagePro();
      42:             this.btnImagePro.Enabled = false;
      43:         }
      44:     }
      45:  
      46:     //从导出的ReadImage.cs中拷贝HDevelopExport类到命名空间 HalconCsExample
      47:     public partial class HDevelopExport
      48:     {
      49:         public HTuple hv_ExpDefaultWinHandle;
      50:         // Local iconic variables 
      51:         HObject ho_Image, ho_GrayImage;
      52:  
      53:  
      54:         public void InitHalcon()
      55:         {
      56:             // Default settings used in HDevelop 
      57:             HOperatorSet.SetSystem("do_low_error", "false");
      58:         }
      59:  
      60:         public void ReadImage(HTuple Window,string path)
      61:         {
      62:             hv_ExpDefaultWinHandle = Window;
      63:  
      64:             // Initialize local and output iconic variables 
      65:             HOperatorSet.GenEmptyObj(out ho_Image);
      66:             HOperatorSet.GenEmptyObj(out ho_GrayImage);
      67:             
      68:             //读取图片
      69:             //dev_close_window(...);
      70:             ho_Image.Dispose();
      71:             HOperatorSet.ReadImage(out ho_Image, path);
      72:            
      73:             //dev_open_window(...);
      74:             HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle);
      75:         }
      76:  
      77:         public void ImagePro()
      78:         {
      79:             //图像处理
      80:             ho_GrayImage.Dispose();
      81:             HOperatorSet.Rgb1ToGray(ho_Image, out ho_GrayImage);
      82:             HOperatorSet.DispObj(ho_GrayImage, hv_ExpDefaultWinHandle);
      83:  
      84:             ho_Image.Dispose();
      85:             ho_GrayImage.Dispose();
      86:  
      87:         }
      88:  
      89:     }
      90: }

    运行结果:

    image

    单击读取图片按钮并选取图片:

    image

    点击图像处理按钮:

    image

  • 相关阅读:
    Day 9 作业题(完成)
    Day 9 函数的初识1
    Day 8 集合与文件的操作
    Day 7 深copy和浅Copy
    Day6 ,周期末考试试题
    Day 6 编码的进阶
    Day5 作业(完成)
    Day 5 字典的操作
    Day4 作业
    Day 4 list 列表的使用方法
  • 原文地址:https://www.cnblogs.com/hanzhaoxin/p/2890871.html
Copyright © 2020-2023  润新知