在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → c#联合halcon颜色识别

c#联合halcon颜色识别

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.51M
  • 下载次数:214
  • 浏览次数:1206
  • 发布时间:2020-12-22
  • 实例类别:C#语言基础
  • 发 布 人:何健荣
  • 文件格式:.rar
  • 所需积分:2
 相关标签: c#联合halcon颜色识别

实例介绍

【实例简介】

【实例截图】

from clipboard

【源码目录】

颜色识别

├── 1.png
├── 2.png
├── 3.png
├── Form1.Designer.cs
├── Form1.cs
├── Form1.resx
├── Program.cs
├── Properties
│   ├── AssemblyInfo.cs
│   ├── Resources.Designer.cs
│   ├── Resources.resx
│   ├── Settings.Designer.cs
│   └── Settings.settings
├── bin
│   ├── Debug
│   │   ├── 1.png
│   │   ├── 2.png
│   │   ├── 3.png
│   │   ├── halcondotnet.dll
│   │   ├── halcondotnet.xml
│   │   ├── 颜色识别.exe
│   │   ├── 颜色识别.pdb
│   │   ├── 颜色识别.vshost.exe
│   │   └── 颜色识别.vshost.exe.manifest
│   └── Release
├── obj
│   └── Debug
│       ├── DesignTimeResolveAssemblyReferences.cache
│       ├── DesignTimeResolveAssemblyReferencesInput.cache
│       ├── TempPE
│       ├── 颜色识别.Form1.resources
│       ├── 颜色识别.Properties.Resources.resources
│       ├── 颜色识别.csproj.FileListAbsolute.txt
│       ├── 颜色识别.csproj.GenerateResource.Cache
│       ├── 颜色识别.csprojResolveAssemblyReference.cache
│       ├── 颜色识别.exe
│       └── 颜色识别.pdb
└── 颜色识别.csproj

7 directories, 31 files


【核心代码】using HalconDotNet;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 颜色识别
{
    public partial class Form1 : Form
    {
        string picModel_Path;
        string picDist_Path;
        HObject[] OTemp = new HObject[20];
        // Local iconic variables 
        HObject ho_Classes, ho_Image, ho_ROI_0, ho_ROI_1;
        HObject ho_ROI_2, ho_ROI_3, ho_Image1, ho_ClassRegions;
        HObject ho_ObjectsSelected = null, ho_RegionClosing = null;
        HObject ho_ConnectedRegions = null, ho_SelectedRegions = null;
        HObject ho_RegionFillUp = null, ho_RegionTrans = null;
        // Local control variables 
        HTuple hv_FuseColors = new HTuple(), hv_Width = new HTuple();
        HTuple hv_Height = new HTuple(), hv_WindowHandle = new HTuple();
        HTuple hv_Row1 = new HTuple(), hv_Column1 = new HTuple();
        HTuple hv_Row2 = new HTuple(), hv_Column2 = new HTuple();
        HTuple hv_Row21 = new HTuple(), hv_Column21 = new HTuple();
        HTuple hv_Row12 = new HTuple(), hv_Column12 = new HTuple();
        HTuple hv_Row22 = new HTuple(), hv_Column22 = new HTuple();



        HTuple hv_Row13 = new HTuple(), hv_Column13 = new HTuple();
        HTuple hv_Row23 = new HTuple(), hv_Column23 = new HTuple();
        HTuple hv_GMMHandle = new HTuple(), hv_Centers = new HTuple();
        HTuple hv_Iter = new HTuple(), hv_ClassLUTHandle = new HTuple();
        HTuple hv_Fuse = new HTuple(), hv_Area = new HTuple();
        HTuple hv_Row = new HTuple(), hv_Column = new HTuple();
        HTuple hv_Number = new HTuple(), hv_j = new HTuple();
        public Form1()
        {
            InitializeComponent();
        }


        private void button2_Click(object sender, EventArgs e)
        {
            HOperatorSet.GenEmptyObj(out ho_ROI_0);
            HOperatorSet.GenEmptyObj(out ho_ROI_1);
            HOperatorSet.GenEmptyObj(out ho_ROI_2);
            HOperatorSet.GenEmptyObj(out ho_ROI_3);
            if (HDevWindowStack.IsOpen())
            {
                HOperatorSet.SetDraw(HDevWindowStack.GetActive(), "margin");
            }
            //设置颜色为黑色
            if (HDevWindowStack.IsOpen())
            {
                HOperatorSet.SetColor(HDevWindowStack.GetActive(), "black");
            }
            //设置字体样式
            set_display_font(hv_WindowHandle, 14, "mono", "true", "false");
            //在图片上显示消息
            disp_message(hv_WindowHandle, "使用鼠标左键框选红色,并按鼠标右键确定选择",
                "window", 12, 12, "black", "false");
            //画一个平行于坐标轴的矩形,包含图片中红色部分
          
            HOperatorSet.DrawRectangle1(hv_WindowHandle, out hv_Row1, out hv_Column1, out hv_Row2,
                out hv_Column2);
            //用刚才选中的区域创建一个与坐标轴平行的矩形
            ho_ROI_0.Dispose();
            HOperatorSet.GenRectangle1(out ho_ROI_0, hv_Row1, hv_Column1, hv_Row2, hv_Column2);
            //连接两个标志性对象元组
            {
                HObject ExpTmpOutVar_0;
                HOperatorSet.ConcatObj(ho_Classes, ho_ROI_0, out ExpTmpOutVar_0);
                ho_Classes.Dispose();
                ho_Classes = ExpTmpOutVar_0;
            }
            //显示Image图像
            if (HDevWindowStack.IsOpen())
            {
                HOperatorSet.DispObj(ho_Image, HDevWindowStack.GetActive());
            }
            //显示区域Classes
            if (HDevWindowStack.IsOpen())
            {
                HOperatorSet.DispObj(ho_Classes, HDevWindowStack.GetActive());
            }
            disp_message(hv_WindowHandle, "使用鼠标左键框选绿色 ,并按鼠标右键确定选择",
                "window", 12, 12, "black", "false");
            //画一个平行于坐标轴的矩形,包含图片中绿色部分
          
            HOperatorSet.DrawRectangle1(hv_WindowHandle, out hv_Row11, out hv_Column11,
                out hv_Row21, out hv_Column21);
            ho_ROI_1.Dispose();
            HOperatorSet.GenRectangle1(out ho_ROI_1, hv_Row11, hv_Column11, hv_Row21, hv_Column21);
            {
                HObject ExpTmpOutVar_0;
                HOperatorSet.ConcatObj(ho_Classes, ho_ROI_1, out ExpTmpOutVar_0);
                ho_Classes.Dispose();
                ho_Classes = ExpTmpOutVar_0;
            }
            if (HDevWindowStack.IsOpen())
            {
                HOperatorSet.DispObj(ho_Image, HDevWindowStack.GetActive());
            }
            if (HDevWindowStack.IsOpen())
            {
                HOperatorSet.DispObj(ho_Classes, HDevWindowStack.GetActive());
            }
            disp_message(hv_WindowHandle, "使用鼠标左键框选青色,并按鼠标右键确定选择",
                "window", 12, 12, "black", "false");
            //画一个平行于坐标轴的矩形,包含图片中青色部分
           
            HOperatorSet.DrawRectangle1(hv_WindowHandle, out hv_Row12, out hv_Column12,
                out hv_Row22, out hv_Column22);
            ho_ROI_2.Dispose();
            HOperatorSet.GenRectangle1(out ho_ROI_2, hv_Row12, hv_Column12, hv_Row22, hv_Column22);
            {
                HObject ExpTmpOutVar_0;
                HOperatorSet.ConcatObj(ho_Classes, ho_ROI_2, out ExpTmpOutVar_0);
                ho_Classes.Dispose();
                ho_Classes = ExpTmpOutVar_0;
            }
            if (HDevWindowStack.IsOpen())
            {
                HOperatorSet.DispObj(ho_Image, HDevWindowStack.GetActive());
            }
            if (HDevWindowStack.IsOpen())
            {
                HOperatorSet.DispObj(ho_Classes, HDevWindowStack.GetActive());
            }
            disp_message(hv_WindowHandle, "使用鼠标左键框选蓝色,并按鼠标右键确定选择",
                "window", 12, 12, "black", "false");
            //画一个平行于坐标轴的矩形,包含图片中蓝色部分
        
            HOperatorSet.DrawRectangle1(hv_WindowHandle, out hv_Row13, out hv_Column13,
                out hv_Row23, out hv_Column23);
            ho_ROI_3.Dispose();
            HOperatorSet.GenRectangle1(out ho_ROI_3, hv_Row13, hv_Column13, hv_Row23, hv_Column23);
            {
                HObject ExpTmpOutVar_0;
                HOperatorSet.ConcatObj(ho_Classes, ho_ROI_3, out ExpTmpOutVar_0);
                ho_Classes.Dispose();
                ho_Classes = ExpTmpOutVar_0;
            }
            if (HDevWindowStack.IsOpen())
            {
                HOperatorSet.DispObj(ho_Classes, HDevWindowStack.GetActive());
            }
            //创建高斯混合模型进行分类
           
            HOperatorSet.CreateClassGmm(3, 4, 1, "spherical", "normalization", 10, 42,
                out hv_GMMHandle);
            //将图像中的训练样本添加到高斯混合模型的训练数据中,其中Classes是被训练的区域
            HOperatorSet.AddSamplesImageClassGmm(ho_Image, ho_Classes, hv_GMMHandle, 0);
            //训练高斯混合模型
          
            HOperatorSet.TrainClassGmm(hv_GMMHandle, 100, 0.001, "training", 0.0001, out hv_Centers,
                out hv_Iter);
            //使用高斯混合模型创建查找表以对字节图像进行分类
           
            HOperatorSet.CreateClassLutGmm(hv_GMMHandle, new HTuple(), new HTuple(), out hv_ClassLUTHandle);
            //清除高斯混合模型
            HOperatorSet.ClearClassGmm(hv_GMMHandle);
        }

        HTuple hv_Row11 = new HTuple(), hv_Column11 = new HTuple();

        private void button3_Click(object sender, EventArgs e)
        {
            HOperatorSet.GenEmptyObj(out ho_Image1);
            OpenFileDialog opd = new OpenFileDialog();
            opd.Filter = "JPEG|*.jpg;*.jpeg;*jpe;*.jfif|PNG|*.png|所有图片文件|*.*";
            opd.FilterIndex = 2;
            opd.Title = "选择一张图片";
            string path = System.AppDomain.CurrentDomain.BaseDirectory;
            opd.InitialDirectory = path;
            if (opd.ShowDialog() == DialogResult.OK)
            {
                picDist_Path = opd.FileName;
            }
            ho_Image1.Dispose();
            HOperatorSet.ReadImage(out ho_Image1, picDist_Path);
            //显示Image1
            if (HDevWindowStack.IsOpen())
            {
                HOperatorSet.DispObj(ho_Image1, HDevWindowStack.GetActive());
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            HOperatorSet.GenEmptyObj(out ho_ClassRegions);
            HOperatorSet.GenEmptyObj(out ho_ObjectsSelected);
            HOperatorSet.GenEmptyObj(out ho_RegionClosing);
            HOperatorSet.GenEmptyObj(out ho_ConnectedRegions);
            HOperatorSet.GenEmptyObj(out ho_SelectedRegions);
            HOperatorSet.GenEmptyObj(out ho_RegionFillUp);
            HOperatorSet.GenEmptyObj(out ho_RegionTrans);
            //使用查找表对字节图像进行分类
            ho_ClassRegions.Dispose();
            HOperatorSet.ClassifyImageClassLut(ho_Image1, out ho_ClassRegions, hv_ClassLUTHandle);
            //For循环依次识别'红色','绿色','青色','蓝色'
            for (hv_Fuse = 1; (int)hv_Fuse <= 4; hv_Fuse = (int)hv_Fuse 1)
            {
                //复制HALCON数据库中的图标对象
                ho_ObjectsSelected.Dispose();
                HOperatorSet.CopyObj(ho_ClassRegions, out ho_ObjectsSelected, hv_Fuse, 1);
                //用圆形结构元素关闭区域
                ho_RegionClosing.Dispose();
                HOperatorSet.ClosingCircle(ho_ObjectsSelected, out ho_RegionClosing, 3.5);
                //计算区域的连通分量
                ho_ConnectedRegions.Dispose();
                HOperatorSet.Connection(ho_RegionClosing, out ho_ConnectedRegions);
                //借助形状特征选择区域
                ho_SelectedRegions.Dispose();
                HOperatorSet.SelectShape(ho_ConnectedRegions, out ho_SelectedRegions, "area",
                    "and", 150, 99999);
                //填补区域中的漏洞
                ho_RegionFillUp.Dispose();
                HOperatorSet.FillUp(ho_SelectedRegions, out ho_RegionFillUp);
                //计算区域和区域中心
               
                HOperatorSet.AreaCenter(ho_RegionFillUp, out hv_Area, out hv_Row, out hv_Column);
                //变换区域的形状
                ho_RegionTrans.Dispose();
                HOperatorSet.ShapeTrans(ho_RegionFillUp, out ho_RegionTrans, "convex");
                //元组中的对象数
              
                HOperatorSet.CountObj(ho_RegionTrans, out hv_Number);
                //For循环将找到的颜色标注出来
                HTuple end_val89 = hv_Number;
                HTuple step_val89 = 1;
                for (hv_j = 1; hv_j.Continue(end_val89, step_val89); hv_j = hv_j.TupleAdd(step_val89))
                {
                    using (HDevDisposeHelper dh = new HDevDisposeHelper())
                    {
                        disp_message(hv_WindowHandle, hv_FuseColors.TupleSelect(hv_Fuse - 1), "image",
                            (hv_Row.TupleSelect(hv_j - 1)) - 10, (hv_Column.TupleSelect(hv_j - 1)) - 10,
                            "black", "true");
                    }
                }
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog opd = new OpenFileDialog();
            opd.Filter = "JPEG|*.jpg;*.jpeg;*jpe;*.jfif|PNG|*.png|所有图片文件|*.*";
            opd.FilterIndex = 2;
            opd.Title = "选择一张图片";
            string path = System.AppDomain.CurrentDomain.BaseDirectory;
            opd.InitialDirectory = path;
            if (opd.ShowDialog() == DialogResult.OK)
            {
                picModel_Path = opd.FileName;
            }
            HOperatorSet.GenEmptyObj(out ho_Classes);
            HOperatorSet.GenEmptyObj(out ho_Image);
            try
            {
                //此过程将dev_update_pc、dev_update_var和dev_update_window设置为“关闭”
                //dev_update_off ()
                //关闭窗口
                if (HDevWindowStack.IsOpen())
                {
                    HOperatorSet.CloseWindow(HDevWindowStack.Pop());
                }
                //定义一个数组存放字符串
              
                hv_FuseColors = new HTuple();
                hv_FuseColors[0] = "红色";
                hv_FuseColors[1] = "绿色";
                hv_FuseColors[2] = "青色";
                hv_FuseColors[3] = "蓝色";
                //创建一个空元组Classes
                ho_Classes.Dispose();
                HOperatorSet.GenEmptyObj(out ho_Classes);
                //读一张图像
                ho_Image.Dispose();
                HOperatorSet.ReadImage(out ho_Image, picModel_Path);
                //获得图像的宽和高
                
                HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
                //打开一个和刚才获得的图像大小相同的窗口
                HOperatorSet.SetWindowAttr("background_color", "black");
                HOperatorSet.OpenWindow(0, 0, hWindowControl1.Width, hWindowControl1.Height, hWindowControl1.HalconWindow, "", "", out hv_WindowHandle);
                HDevWindowStack.Push(hv_WindowHandle);
                //窗口显示刚才读取的图像Image
                if (HDevWindowStack.IsOpen())
                {
                    HOperatorSet.DispObj(ho_Image, HDevWindowStack.GetActive());
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        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
            {
                //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)
                {

                  

                    return;
                }
                if ((int)(new HTuple(hv_Row_COPY_INP_TMP.TupleEqual(-1))) != 0)
                {
                    
                    hv_Row_COPY_INP_TMP = 12;
                }
                if ((int)(new HTuple(hv_Column_COPY_INP_TMP.TupleEqual(-1))) != 0)
                {
                   
                    hv_Column_COPY_INP_TMP = 12;
                }
                //
                //Convert the parameter Box to generic parameters.
              
                hv_GenParamName = new HTuple();
               
                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 = ExpTmpLocalVar_GenParamName;
                            }
                        }
                        using (HDevDisposeHelper dh = new HDevDisposeHelper())
                        {
                            {
                                HTuple
                                  ExpTmpLocalVar_GenParamValue = hv_GenParamValue.TupleConcat(
                                    "false");
                              
                                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 = ExpTmpLocalVar_GenParamName;
                            }
                        }
                        using (HDevDisposeHelper dh = new HDevDisposeHelper())
                        {
                            {
                                HTuple
                                  ExpTmpLocalVar_GenParamValue = hv_GenParamValue.TupleConcat(
                                    hv_Box.TupleSelect(0));
                               
                                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 = ExpTmpLocalVar_GenParamName;
                            }
                        }
                        using (HDevDisposeHelper dh = new HDevDisposeHelper())
                        {
                            {
                                HTuple
                                  ExpTmpLocalVar_GenParamValue = hv_GenParamValue.TupleConcat(
                                    "false");
                               
                                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 = ExpTmpLocalVar_GenParamName;
                            }
                        }
                        using (HDevDisposeHelper dh = new HDevDisposeHelper())
                        {
                            {
                                HTuple
                                  ExpTmpLocalVar_GenParamValue = hv_GenParamValue.TupleConcat(
                                    hv_Box.TupleSelect(1));
                                
                                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 = "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 = 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);
                
                return;
            }
            catch (HalconException HDevExpDefaultException)
            {

              
                throw HDevExpDefaultException;
            }
        }

        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
            {
                //
                
                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 = 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 = ExpTmpLocalVar_Size;
                        }
                    }
                }
                else
                {
                    using (HDevDisposeHelper dh = new HDevDisposeHelper())
                    {
                        {
                            HTuple
                              ExpTmpLocalVar_Size = hv_Size_COPY_INP_TMP.TupleInt()
                                ;
                            
                            hv_Size_COPY_INP_TMP = ExpTmpLocalVar_Size;
                        }
                    }
                }
                if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("Courier"))) != 0)
                {
                    
                    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 = 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 = 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 = 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 = new HTuple(hv_Font_COPY_INP_TMP);
                }
               
                hv_Style = "";
                if ((int)(new HTuple(hv_Bold.TupleEqual("true"))) != 0)
                {
                    using (HDevDisposeHelper dh = new HDevDisposeHelper())
                    {
                        {
                            HTuple
                              ExpTmpLocalVar_Style = hv_Style "Bold";
                            
                            hv_Style = ExpTmpLocalVar_Style;
                        }
                    }
                }
                else if ((int)(new HTuple(hv_Bold.TupleNotEqual("false"))) != 0)
                {
                   
                    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 = ExpTmpLocalVar_Style;
                        }
                    }
                }
                else if ((int)(new HTuple(hv_Slant.TupleNotEqual("false"))) != 0)
                {
                    
                    hv_Exception = "Wrong value of control parameter Slant";
                    throw new HalconException(hv_Exception);
                }
                if ((int)(new HTuple(hv_Style.TupleEqual(""))) != 0)
                {
                   
                    hv_Style = "Normal";
                }
               
                HOperatorSet.QueryFont(hv_WindowHandle, out hv_AvailableFonts);
                
                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)
                {
                    
                    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)
                        {
                          
                            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 = ExpTmpLocalVar_Font;
                    }
                }
                HOperatorSet.SetFont(hv_WindowHandle, hv_Font_COPY_INP_TMP);

             

                return;
            }
            catch (HalconException HDevExpDefaultException)
            {


                throw HDevExpDefaultException;
            }
        }

        private void hWindowControl1_HMouseMove(object sender, HMouseEventArgs e)
        {

        }
    }
}


实例下载地址

c#联合halcon颜色识别

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 wjl@bwt-co.com 发表于: 2021-10-25 13:46 14
不好用,报错无法加载 DLL“halcon”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

支持(0) 盖楼(回复)

第 2 楼 lxskn 发表于: 2023-05-31 11:38 08
拉黑他

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有2条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警