实例介绍
【实例简介】
【实例截图】
【源码目录】
颜色识别
├── 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 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颜色识别
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)