增加查找线工具

This commit is contained in:
liu.wenjie
2019-08-04 21:51:40 +08:00
committed by liu.wenjie
parent 61de0d1236
commit 9d8944dcc3
256 changed files with 719371 additions and 778 deletions

BIN
.vs/VisionEdit/v14/.suo Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HalconDotNet;
namespace CommonMethods
{
public class ComGlobalParams
{
public static HObject inputImageGlobal
{
get
{
HObject inputImage = new HObject();
HOperatorSet.ReadImage(out inputImage, @"G:\Outer_HB.bmp");
return inputImage;
}
set
{
}
}
}
}

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{1C8D0DDC-2086-48A9-9586-F2B643E2FC54}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CommonMethods</RootNamespace>
<AssemblyName>CommonMethods</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="halcondotnet">
<HintPath>C:\Program Files\MVTec\HALCON-19.05-Progress\bin\dotnet20\halcondotnet.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ComGlobalParams.cs" />
<Compile Include="CommonMethods.cs" />
<Compile Include="Interface\CommonStruct.cs" />
<Compile Include="Interface\IToolInfo.cs" />
<Compile Include="Interface\IVisionJobInterface.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -0,0 +1,192 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using HalconDotNet;
namespace CommonMethods
{
public class CommonMethods
{
/// <summary>
/// 延时操作
/// </summary>
/// <param name="mm"></param>
public static void Delay(int mm)
{
DateTime delay = DateTime.Now.AddMilliseconds((double)mm);
while (delay > DateTime.Now)
{
Application.DoEvents();
}
}
/// <summary>
/// Creates an arrow shaped XLD contour.
/// </summary>
/// <param name="ho_Arrow">生成的箭头</param>
/// <param name="hv_Row1">箭头起点Row</param>
/// <param name="hv_Column1">箭头起点Column</param>
/// <param name="hv_Row2">箭头终点Row</param>
/// <param name="hv_Column2">箭头终点Column</param>
/// <param name="hv_HeadLength">头长度</param>
/// <param name="hv_HeadWidth">头宽度</param>
public static void gen_arrow_contour_xld(out HObject ho_Arrow, HTuple hv_Row1, HTuple hv_Column1,
HTuple hv_Row2, HTuple hv_Column2, HTuple hv_HeadLength, HTuple hv_HeadWidth)
{
// Stack for temporary objects
HObject[] OTemp = new HObject[20];
// Local iconic variables
HObject ho_TempArrow = null;
// Local control variables
HTuple hv_Length = new HTuple(), hv_ZeroLengthIndices = new HTuple();
HTuple hv_DR = new HTuple(), hv_DC = new HTuple(), hv_HalfHeadWidth = new HTuple();
HTuple hv_RowP1 = new HTuple(), hv_ColP1 = new HTuple();
HTuple hv_RowP2 = new HTuple(), hv_ColP2 = new HTuple();
HTuple hv_Index = new HTuple();
// Initialize local and output iconic variables
HOperatorSet.GenEmptyObj(out ho_Arrow);
HOperatorSet.GenEmptyObj(out ho_TempArrow);
//This procedure generates arrow shaped XLD contours,
//pointing from (Row1, Column1) to (Row2, Column2).
//If starting and end point are identical, a contour consisting
//of a single point is returned.
//
//input parameteres:
//Row1, Column1: Coordinates of the arrows' starting points
//Row2, Column2: Coordinates of the arrows' end points
//HeadLength, HeadWidth: Size of the arrow heads in pixels
//
//output parameter:
//Arrow: The resulting XLD contour
//
//The input tuples Row1, Column1, Row2, and Column2 have to be of
//the same length.
//HeadLength and HeadWidth either have to be of the same length as
//Row1, Column1, Row2, and Column2 or have to be a single element.
//If one of the above restrictions is violated, an error will occur.
//
//
//Init
ho_Arrow.Dispose();
HOperatorSet.GenEmptyObj(out ho_Arrow);
//
//Calculate the arrow length
hv_Length.Dispose();
HOperatorSet.DistancePp(hv_Row1, hv_Column1, hv_Row2, hv_Column2, out hv_Length);
//
//Mark arrows with identical start and end point
//(set Length to -1 to avoid division-by-zero exception)
hv_ZeroLengthIndices.Dispose();
using (HDevDisposeHelper dh = new HDevDisposeHelper())
{
hv_ZeroLengthIndices = hv_Length.TupleFind(
0);
}
if ((int)(new HTuple(hv_ZeroLengthIndices.TupleNotEqual(-1))) != 0)
{
if (hv_Length == null)
hv_Length = new HTuple();
hv_Length[hv_ZeroLengthIndices] = -1;
}
//
//Calculate auxiliary variables.
hv_DR.Dispose();
using (HDevDisposeHelper dh = new HDevDisposeHelper())
{
hv_DR = (1.0 * (hv_Row2 - hv_Row1)) / hv_Length;
}
hv_DC.Dispose();
using (HDevDisposeHelper dh = new HDevDisposeHelper())
{
hv_DC = (1.0 * (hv_Column2 - hv_Column1)) / hv_Length;
}
hv_HalfHeadWidth.Dispose();
using (HDevDisposeHelper dh = new HDevDisposeHelper())
{
hv_HalfHeadWidth = hv_HeadWidth / 2.0;
}
//
//Calculate end points of the arrow head.
hv_RowP1.Dispose();
using (HDevDisposeHelper dh = new HDevDisposeHelper())
{
hv_RowP1 = (hv_Row1 + ((hv_Length - hv_HeadLength) * hv_DR)) + (hv_HalfHeadWidth * hv_DC);
}
hv_ColP1.Dispose();
using (HDevDisposeHelper dh = new HDevDisposeHelper())
{
hv_ColP1 = (hv_Column1 + ((hv_Length - hv_HeadLength) * hv_DC)) - (hv_HalfHeadWidth * hv_DR);
}
hv_RowP2.Dispose();
using (HDevDisposeHelper dh = new HDevDisposeHelper())
{
hv_RowP2 = (hv_Row1 + ((hv_Length - hv_HeadLength) * hv_DR)) - (hv_HalfHeadWidth * hv_DC);
}
hv_ColP2.Dispose();
using (HDevDisposeHelper dh = new HDevDisposeHelper())
{
hv_ColP2 = (hv_Column1 + ((hv_Length - hv_HeadLength) * hv_DC)) + (hv_HalfHeadWidth * hv_DR);
}
//
//Finally create output XLD contour for each input point pair
for (hv_Index = 0; (int)hv_Index <= (int)((new HTuple(hv_Length.TupleLength())) - 1); hv_Index = (int)hv_Index + 1)
{
if ((int)(new HTuple(((hv_Length.TupleSelect(hv_Index))).TupleEqual(-1))) != 0)
{
//Create_ single points for arrows with identical start and end point
using (HDevDisposeHelper dh = new HDevDisposeHelper())
{
ho_TempArrow.Dispose();
HOperatorSet.GenContourPolygonXld(out ho_TempArrow, hv_Row1.TupleSelect(hv_Index),
hv_Column1.TupleSelect(hv_Index));
}
}
else
{
//Create arrow contour
using (HDevDisposeHelper dh = new HDevDisposeHelper())
{
ho_TempArrow.Dispose();
HOperatorSet.GenContourPolygonXld(out ho_TempArrow, ((((((((((hv_Row1.TupleSelect(
hv_Index))).TupleConcat(hv_Row2.TupleSelect(hv_Index)))).TupleConcat(
hv_RowP1.TupleSelect(hv_Index)))).TupleConcat(hv_Row2.TupleSelect(hv_Index)))).TupleConcat(
hv_RowP2.TupleSelect(hv_Index)))).TupleConcat(hv_Row2.TupleSelect(hv_Index)),
((((((((((hv_Column1.TupleSelect(hv_Index))).TupleConcat(hv_Column2.TupleSelect(
hv_Index)))).TupleConcat(hv_ColP1.TupleSelect(hv_Index)))).TupleConcat(
hv_Column2.TupleSelect(hv_Index)))).TupleConcat(hv_ColP2.TupleSelect(
hv_Index)))).TupleConcat(hv_Column2.TupleSelect(hv_Index)));
}
}
{
HObject ExpTmpOutVar_0;
HOperatorSet.ConcatObj(ho_Arrow, ho_TempArrow, out ExpTmpOutVar_0);
ho_Arrow.Dispose();
ho_Arrow = ExpTmpOutVar_0;
}
}
ho_TempArrow.Dispose();
hv_Length.Dispose();
hv_ZeroLengthIndices.Dispose();
hv_DR.Dispose();
hv_DC.Dispose();
hv_HalfHeadWidth.Dispose();
hv_RowP1.Dispose();
hv_ColP1.Dispose();
hv_RowP2.Dispose();
hv_ColP2.Dispose();
hv_Index.Dispose();
return;
}
}
}

Binary file not shown.

View File

@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace VisionEdit
namespace CommonMethods
{
public class IToolInfo
{
@@ -26,6 +26,14 @@ namespace VisionEdit
/// </summary>
public object tool { get; set; }
/// <summary>
/// 工具窗体
/// </summary>
public Form FormTool { get; set; }
/// <summary>
/// 工具窗体名
/// </summary>
public string FormToolName { get; set; }
/// <summary>
/// 工具描述信息
/// </summary>
public string toolTipInfo { get; set; }
@@ -41,6 +49,10 @@ namespace VisionEdit
/// 工具作用描述
/// </summary>
public string toolDescription { get; set; }
/// <summary>
/// 工具运行结果
/// </summary>
public ToolRunStatu toolRunStatu { get; set; }
public IToolInfo()
{
enable = true;
@@ -126,6 +138,4 @@ namespace VisionEdit
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
F:\VSCode\VisionEditTest\CommonMethods\bin\Debug\CommonMethods.dll
F:\VSCode\VisionEditTest\CommonMethods\bin\Debug\CommonMethods.pdb
F:\VSCode\VisionEditTest\CommonMethods\bin\Debug\halcondotnet.dll
F:\VSCode\VisionEditTest\CommonMethods\bin\Debug\halcondotnet.xml
F:\VSCode\VisionEditTest\CommonMethods\obj\Debug\CommonMethods.dll
F:\VSCode\VisionEditTest\CommonMethods\obj\Debug\CommonMethods.pdb
F:\VSCode\VisionEditTest\CommonMethods\obj\Debug\CommonHelper.csprojResolveAssemblyReference.cache

View File

@@ -0,0 +1,4 @@
F:\VSCode\VisionEditTest\CommonMethods\bin\Debug\CommonMethods.dll
F:\VSCode\VisionEditTest\CommonMethods\bin\Debug\CommonMethods.pdb
F:\VSCode\VisionEditTest\CommonMethods\obj\Debug\CommonMethods.dll
F:\VSCode\VisionEditTest\CommonMethods\obj\Debug\CommonMethods.pdb

Binary file not shown.

Binary file not shown.

92
DataStruct/DataStruct.cs Normal file
View File

@@ -0,0 +1,92 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HalconDotNet;
namespace DataStruct
{
public class DataStruct
{
/// <summary>
/// XYU结果
/// </summary>
[Serializable]
public class PosXYU
{
public double X;
public double Y;
public double U;
/// <summary>
/// 将XYU类型转化成格式化字符串
/// </summary>
/// <returns></returns>
internal string ToFormatStr()
{
return (X >= 0 ? "+" + X.ToString("0000.000") : X.ToString("0000.000")) + "," + (Y >= 0 ? "+" + Y.ToString("0000.000") : Y.ToString("0000.000")) + "," + (U >= 0 ? "+" + U.ToString("0000.000") : U.ToString("0000.000"));
}
internal string ToShowTip()
{
return X.ToString() + " | " + Y.ToString() + " | " + U.ToString();
}
}
[Serializable]
public class Line
{
public Point StartPoint;
public Point EndPoint;
internal string ToShowTip()
{
return StartPoint.Row.ToString() + " | " + StartPoint.Col.ToString() + " | " + EndPoint.Row.ToString() + " | " + EndPoint.Col.ToString();
}
private HTuple _angle;
public double Angle
{
get
{
HOperatorSet.AngleLx(StartPoint.Row, StartPoint.Col, EndPoint.Row, EndPoint.Col, out _angle);
return _angle;
}
}
}
[Serializable]
public class Point
{
public Point() { }
public Point(double x, double y)
{
this.Row = x;
this.Col = y;
}
public double Row;
public double Col;
/// <summary>
/// 重写 -
/// </summary>
/// <param name="p1">点1</param>
/// <param name="p2">点2</param>
/// <returns></returns>
public static Point operator -(Point p1, Point p2)
{
return new Point(p1.Row - p2.Row, p1.Col - p2.Col);
}
/// <summary>
/// 获得点矢量长度
/// </summary>
public double GetDistance
{
get
{
return Math.Sqrt(Row * Row + Col * Col);
}
}
public string ToShowTip()
{
return Row.ToString() + " | " + Col.ToString();
}
}
}
}

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{DF3D4D4C-02DF-4F92-9FD4-0A861F64B0EF}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DataStruct</RootNamespace>
<AssemblyName>DataStruct</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="halcondotnet">
<HintPath>C:\Program Files\MVTec\HALCON-19.05-Progress\bin\dotnet20\halcondotnet.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="DataStruct.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,6 @@
F:\VSCode\VisionEditTest\DataStruct\bin\Debug\DataStruct.dll
F:\VSCode\VisionEditTest\DataStruct\bin\Debug\DataStruct.pdb
F:\VSCode\VisionEditTest\DataStruct\bin\Debug\halcondotnet.dll
F:\VSCode\VisionEditTest\DataStruct\bin\Debug\halcondotnet.xml
F:\VSCode\VisionEditTest\DataStruct\obj\Debug\DataStruct.dll
F:\VSCode\VisionEditTest\DataStruct\obj\Debug\DataStruct.pdb

Binary file not shown.

Binary file not shown.

106
FindCircle/FindCircle.cs Normal file
View File

@@ -0,0 +1,106 @@
using System;
using HalconDotNet;
using static DataStruct.DataStruct;
namespace FindCircle
{
[Serializable]
public class FindClrcle
{
/// <summary>
/// 输入位姿
/// </summary>
internal PosXYU inputPose = new PosXYU();
/// <summary>
/// 期望圆圆心行坐标
/// </summary>
internal HTuple expectCircleRow = 300;
/// <summary>
/// 期望圆圆心列坐标
/// </summary>
internal HTuple expectCircleCol = 300;
/// <summary>
/// 期望圆半径
/// </summary>
internal HTuple expectCircleRadius = 200;
/// <summary>
/// 查找到圆的圆心行坐标
/// </summary>
private double _resultCircleRow = 0;
internal double ResultCircleRow
{
get
{
return Math.Round(_resultCircleRow, 3);
}
set { _resultCircleRow = value; }
}
/// <summary>
/// 查找到的圆的圆心列坐标
/// </summary>
private double _resultCircleCol = 0;
internal double ResultCircleCol
{
get
{
return Math.Round(_resultCircleCol, 3);
}
set { _resultCircleCol = value; }
}
/// <summary>
/// 查找到的圆的半径
/// </summary>
private double resultCircleRadius = 0;
internal double ResultCircleRadius
{
get
{
return Math.Round(resultCircleRadius, 3);
}
}
/// <summary>
/// 起始角度
/// </summary>
internal double startAngle = 10;
/// <summary>
/// 结束角度
/// </summary>
internal double endAngle = 360;
/// <summary>
/// 运行工具时是否刷新输入图像
/// </summary>
internal bool updateImage = false;
/// <summary>
/// 圆环径向长度
/// </summary>
internal double ringRadiusLength = 80;
/// <summary>
/// 边阈值
/// </summary>
internal int threshold = 30;
/// <summary>
/// 卡尺
/// </summary>
internal HObject contours;
/// <summary>
/// 找边极性,从明到暗或从暗到明
/// </summary>
internal string polarity = "negative";
/// <summary>
/// 卡尺数量
/// </summary>
internal int cliperNum = 20;
/// <summary>
/// 输入图像
/// </summary>
internal HObject inputImage;
/// <summary>
/// 新的跟随姿态变化后的预期圆信息
/// </summary>
HTuple newExpecCircleRow = new HTuple(200), newExpectCircleCol = new HTuple(200), newExpectCircleRadius = new HTuple(200);
/// <summary>
/// 制作模板时的输入位姿
/// </summary>
internal PosXYU templatePose = new PosXYU();
}
}

View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{3D2739DB-5618-49BF-BF5C-5CCCD6A55C64}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FindCircleTool</RootNamespace>
<AssemblyName>FindCircleTool</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="halcondotnet">
<HintPath>C:\Program Files\MVTec\HALCON-19.05-Progress\bin\dotnet20\halcondotnet.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FindCircle.cs" />
<Compile Include="FormFindCircle.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormFindCircle.Designer.cs">
<DependentUpon>FormFindCircle.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DataStruct\DataStruct.csproj">
<Project>{DF3D4D4C-02DF-4F92-9FD4-0A861F64B0EF}</Project>
<Name>DataStruct</Name>
</ProjectReference>
<ProjectReference Include="..\HalconWindowTest\HalconWindow.csproj">
<Project>{4ADC75AE-59C7-4D36-B675-A6CE51B6F5BA}</Project>
<Name>HalconWindow</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="FormFindCircle.resx">
<DependentUpon>FormFindCircle.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

712
FindCircle/FormFindCircle.Designer.cs generated Normal file
View File

@@ -0,0 +1,712 @@
namespace FindCircle
{
partial class FormFindCircle
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.tbx_threshold = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label();
this.btn_subThreshold = new System.Windows.Forms.Button();
this.tbx_thresholdSpan = new System.Windows.Forms.TextBox();
this.btn_addThreshold = new System.Windows.Forms.Button();
this.cbx_polarity = new System.Windows.Forms.ComboBox();
this.btn_switchPolarity = new System.Windows.Forms.Button();
this.tbx_cliperNum = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
this.btn_subCliperNum = new System.Windows.Forms.Button();
this.label11 = new System.Windows.Forms.Label();
this.tbx_cliperNumSpan = new System.Windows.Forms.TextBox();
this.btn_addCliperNum = new System.Windows.Forms.Button();
this.tbx_ringRadiusLength = new System.Windows.Forms.TextBox();
this.tbx_endAngle = new System.Windows.Forms.TextBox();
this.tbx_expectCircelRow = new System.Windows.Forms.TextBox();
this.tbx_expectCircleCol = new System.Windows.Forms.TextBox();
this.tbx_expectCircleradius = new System.Windows.Forms.TextBox();
this.tbx_startAngle = new System.Windows.Forms.TextBox();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.tbx_resultCircleRow = new System.Windows.Forms.TextBox();
this.tbx_resultCircleCol = new System.Windows.Forms.TextBox();
this.tbx_resultCircleRadius = new System.Windows.Forms.TextBox();
this.label7 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.btn_subExpectCircleEndAngle = new System.Windows.Forms.Button();
this.tbx_endAngleSpan = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.btn_addExpectCircleEndAngle = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.btn_subExpectCircleStartAngle = new System.Windows.Forms.Button();
this.label5 = new System.Windows.Forms.Label();
this.tbx_startAngleSpan = new System.Windows.Forms.TextBox();
this.btn_addExpectCircleStartAngle = new System.Windows.Forms.Button();
this.btn_runFindCircleTool = new System.Windows.Forms.Button();
this.btn_subExpectRingRadiusLength = new System.Windows.Forms.Button();
this.tbx_ringRadiusLengthSpan = new System.Windows.Forms.TextBox();
this.btn_moveCliperRegion = new System.Windows.Forms.Button();
this.btn_addExpectCircleRingRadiusLength = new System.Windows.Forms.Button();
this.btn_subExpectCircleRadius = new System.Windows.Forms.Button();
this.tbx_expectCircleRadiusSapn = new System.Windows.Forms.TextBox();
this.btn_addExpectCirlceRadius = new System.Windows.Forms.Button();
this.btn_addExpectCircleRow = new System.Windows.Forms.Button();
this.btn_subExpectCircleCol = new System.Windows.Forms.Button();
this.tbx_expectCircelRowSpan = new System.Windows.Forms.TextBox();
this.tbx_expectCircleColSpan = new System.Windows.Forms.TextBox();
this.btn_subExpectCircleRow = new System.Windows.Forms.Button();
this.btn_addExpectCircleCol = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.groupBox2.SuspendLayout();
this.SuspendLayout();
//
// tbx_threshold
//
this.tbx_threshold.Location = new System.Drawing.Point(545, 195);
this.tbx_threshold.Margin = new System.Windows.Forms.Padding(2);
this.tbx_threshold.Name = "tbx_threshold";
this.tbx_threshold.Size = new System.Drawing.Size(71, 21);
this.tbx_threshold.TabIndex = 213;
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(484, 198);
this.label12.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(41, 12);
this.label12.TabIndex = 214;
this.label12.Text = "阈值:";
//
// btn_subThreshold
//
this.btn_subThreshold.Location = new System.Drawing.Point(649, 194);
this.btn_subThreshold.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_subThreshold.Name = "btn_subThreshold";
this.btn_subThreshold.Size = new System.Drawing.Size(29, 25);
this.btn_subThreshold.TabIndex = 217;
this.btn_subThreshold.Text = "-";
this.btn_subThreshold.UseVisualStyleBackColor = true;
//
// tbx_thresholdSpan
//
this.tbx_thresholdSpan.Location = new System.Drawing.Point(681, 195);
this.tbx_thresholdSpan.Margin = new System.Windows.Forms.Padding(2);
this.tbx_thresholdSpan.Name = "tbx_thresholdSpan";
this.tbx_thresholdSpan.Size = new System.Drawing.Size(35, 21);
this.tbx_thresholdSpan.TabIndex = 216;
this.tbx_thresholdSpan.Text = "10";
//
// btn_addThreshold
//
this.btn_addThreshold.Location = new System.Drawing.Point(719, 194);
this.btn_addThreshold.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_addThreshold.Name = "btn_addThreshold";
this.btn_addThreshold.Size = new System.Drawing.Size(29, 25);
this.btn_addThreshold.TabIndex = 215;
this.btn_addThreshold.Text = "+";
this.btn_addThreshold.UseVisualStyleBackColor = true;
//
// cbx_polarity
//
this.cbx_polarity.FormattingEnabled = true;
this.cbx_polarity.Items.AddRange(new object[] {
"从明到暗",
"从暗到明"});
this.cbx_polarity.Location = new System.Drawing.Point(545, 287);
this.cbx_polarity.Name = "cbx_polarity";
this.cbx_polarity.Size = new System.Drawing.Size(71, 20);
this.cbx_polarity.TabIndex = 212;
this.cbx_polarity.Text = "从明到暗";
//
// btn_switchPolarity
//
this.btn_switchPolarity.Location = new System.Drawing.Point(649, 287);
this.btn_switchPolarity.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_switchPolarity.Name = "btn_switchPolarity";
this.btn_switchPolarity.Size = new System.Drawing.Size(99, 25);
this.btn_switchPolarity.TabIndex = 211;
this.btn_switchPolarity.Text = "切换";
this.btn_switchPolarity.UseVisualStyleBackColor = true;
//
// tbx_cliperNum
//
this.tbx_cliperNum.Location = new System.Drawing.Point(545, 257);
this.tbx_cliperNum.Margin = new System.Windows.Forms.Padding(2);
this.tbx_cliperNum.Name = "tbx_cliperNum";
this.tbx_cliperNum.Size = new System.Drawing.Size(71, 21);
this.tbx_cliperNum.TabIndex = 205;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(484, 291);
this.label8.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(41, 12);
this.label8.TabIndex = 210;
this.label8.Text = "极性:";
//
// btn_subCliperNum
//
this.btn_subCliperNum.Location = new System.Drawing.Point(649, 256);
this.btn_subCliperNum.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_subCliperNum.Name = "btn_subCliperNum";
this.btn_subCliperNum.Size = new System.Drawing.Size(29, 25);
this.btn_subCliperNum.TabIndex = 209;
this.btn_subCliperNum.Text = "-";
this.btn_subCliperNum.UseVisualStyleBackColor = true;
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(484, 259);
this.label11.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(65, 12);
this.label11.TabIndex = 206;
this.label11.Text = "卡尺数量:";
//
// tbx_cliperNumSpan
//
this.tbx_cliperNumSpan.Location = new System.Drawing.Point(681, 257);
this.tbx_cliperNumSpan.Margin = new System.Windows.Forms.Padding(2);
this.tbx_cliperNumSpan.Name = "tbx_cliperNumSpan";
this.tbx_cliperNumSpan.Size = new System.Drawing.Size(35, 21);
this.tbx_cliperNumSpan.TabIndex = 208;
this.tbx_cliperNumSpan.Text = "10";
//
// btn_addCliperNum
//
this.btn_addCliperNum.Location = new System.Drawing.Point(719, 256);
this.btn_addCliperNum.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_addCliperNum.Name = "btn_addCliperNum";
this.btn_addCliperNum.Size = new System.Drawing.Size(29, 25);
this.btn_addCliperNum.TabIndex = 207;
this.btn_addCliperNum.Text = "+";
this.btn_addCliperNum.UseVisualStyleBackColor = true;
//
// tbx_ringRadiusLength
//
this.tbx_ringRadiusLength.Location = new System.Drawing.Point(545, 226);
this.tbx_ringRadiusLength.Margin = new System.Windows.Forms.Padding(2);
this.tbx_ringRadiusLength.Name = "tbx_ringRadiusLength";
this.tbx_ringRadiusLength.Size = new System.Drawing.Size(71, 21);
this.tbx_ringRadiusLength.TabIndex = 180;
//
// tbx_endAngle
//
this.tbx_endAngle.Location = new System.Drawing.Point(545, 153);
this.tbx_endAngle.Margin = new System.Windows.Forms.Padding(2);
this.tbx_endAngle.Name = "tbx_endAngle";
this.tbx_endAngle.Size = new System.Drawing.Size(71, 21);
this.tbx_endAngle.TabIndex = 199;
//
// tbx_expectCircelRow
//
this.tbx_expectCircelRow.Location = new System.Drawing.Point(545, 23);
this.tbx_expectCircelRow.Margin = new System.Windows.Forms.Padding(2);
this.tbx_expectCircelRow.Name = "tbx_expectCircelRow";
this.tbx_expectCircelRow.Size = new System.Drawing.Size(71, 21);
this.tbx_expectCircelRow.TabIndex = 174;
//
// tbx_expectCircleCol
//
this.tbx_expectCircleCol.Location = new System.Drawing.Point(545, 56);
this.tbx_expectCircleCol.Margin = new System.Windows.Forms.Padding(2);
this.tbx_expectCircleCol.Name = "tbx_expectCircleCol";
this.tbx_expectCircleCol.Size = new System.Drawing.Size(71, 21);
this.tbx_expectCircleCol.TabIndex = 176;
//
// tbx_expectCircleradius
//
this.tbx_expectCircleradius.Location = new System.Drawing.Point(545, 88);
this.tbx_expectCircleradius.Margin = new System.Windows.Forms.Padding(2);
this.tbx_expectCircleradius.Name = "tbx_expectCircleradius";
this.tbx_expectCircleradius.Size = new System.Drawing.Size(71, 21);
this.tbx_expectCircleradius.TabIndex = 178;
//
// tbx_startAngle
//
this.tbx_startAngle.Location = new System.Drawing.Point(545, 121);
this.tbx_startAngle.Margin = new System.Windows.Forms.Padding(2);
this.tbx_startAngle.Name = "tbx_startAngle";
this.tbx_startAngle.Size = new System.Drawing.Size(71, 21);
this.tbx_startAngle.TabIndex = 182;
//
// groupBox2
//
this.groupBox2.Controls.Add(this.tbx_resultCircleRow);
this.groupBox2.Controls.Add(this.tbx_resultCircleCol);
this.groupBox2.Controls.Add(this.tbx_resultCircleRadius);
this.groupBox2.Controls.Add(this.label7);
this.groupBox2.Controls.Add(this.label10);
this.groupBox2.Controls.Add(this.label9);
this.groupBox2.Location = new System.Drawing.Point(774, 22);
this.groupBox2.Margin = new System.Windows.Forms.Padding(2);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Padding = new System.Windows.Forms.Padding(2);
this.groupBox2.Size = new System.Drawing.Size(201, 135);
this.groupBox2.TabIndex = 204;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "结果圆";
//
// tbx_resultCircleRow
//
this.tbx_resultCircleRow.Location = new System.Drawing.Point(91, 28);
this.tbx_resultCircleRow.Margin = new System.Windows.Forms.Padding(2);
this.tbx_resultCircleRow.Name = "tbx_resultCircleRow";
this.tbx_resultCircleRow.Size = new System.Drawing.Size(71, 21);
this.tbx_resultCircleRow.TabIndex = 102;
//
// tbx_resultCircleCol
//
this.tbx_resultCircleCol.Location = new System.Drawing.Point(91, 61);
this.tbx_resultCircleCol.Margin = new System.Windows.Forms.Padding(2);
this.tbx_resultCircleCol.Name = "tbx_resultCircleCol";
this.tbx_resultCircleCol.Size = new System.Drawing.Size(71, 21);
this.tbx_resultCircleCol.TabIndex = 104;
//
// tbx_resultCircleRadius
//
this.tbx_resultCircleRadius.Location = new System.Drawing.Point(91, 93);
this.tbx_resultCircleRadius.Margin = new System.Windows.Forms.Padding(2);
this.tbx_resultCircleRadius.Name = "tbx_resultCircleRadius";
this.tbx_resultCircleRadius.Size = new System.Drawing.Size(71, 21);
this.tbx_resultCircleRadius.TabIndex = 106;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(39, 31);
this.label7.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(53, 12);
this.label7.TabIndex = 103;
this.label7.Text = "行坐标:";
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(39, 95);
this.label10.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(41, 12);
this.label10.TabIndex = 107;
this.label10.Text = "半径:";
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(39, 63);
this.label9.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(53, 12);
this.label9.TabIndex = 105;
this.label9.Text = "列坐标:";
//
// btn_subExpectCircleEndAngle
//
this.btn_subExpectCircleEndAngle.Location = new System.Drawing.Point(649, 152);
this.btn_subExpectCircleEndAngle.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_subExpectCircleEndAngle.Name = "btn_subExpectCircleEndAngle";
this.btn_subExpectCircleEndAngle.Size = new System.Drawing.Size(29, 25);
this.btn_subExpectCircleEndAngle.TabIndex = 203;
this.btn_subExpectCircleEndAngle.Text = "-";
this.btn_subExpectCircleEndAngle.UseVisualStyleBackColor = true;
//
// tbx_endAngleSpan
//
this.tbx_endAngleSpan.Location = new System.Drawing.Point(681, 153);
this.tbx_endAngleSpan.Margin = new System.Windows.Forms.Padding(2);
this.tbx_endAngleSpan.Name = "tbx_endAngleSpan";
this.tbx_endAngleSpan.Size = new System.Drawing.Size(35, 21);
this.tbx_endAngleSpan.TabIndex = 202;
this.tbx_endAngleSpan.Text = "10";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(484, 90);
this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(41, 12);
this.label3.TabIndex = 179;
this.label3.Text = "半径:";
//
// btn_addExpectCircleEndAngle
//
this.btn_addExpectCircleEndAngle.Location = new System.Drawing.Point(719, 152);
this.btn_addExpectCircleEndAngle.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_addExpectCircleEndAngle.Name = "btn_addExpectCircleEndAngle";
this.btn_addExpectCircleEndAngle.Size = new System.Drawing.Size(29, 25);
this.btn_addExpectCircleEndAngle.TabIndex = 201;
this.btn_addExpectCircleEndAngle.Text = "+";
this.btn_addExpectCircleEndAngle.UseVisualStyleBackColor = true;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(484, 58);
this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(53, 12);
this.label2.TabIndex = 177;
this.label2.Text = "列坐标:";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(484, 229);
this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(65, 12);
this.label4.TabIndex = 181;
this.label4.Text = "圆环径长:";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(484, 155);
this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(65, 12);
this.label6.TabIndex = 200;
this.label6.Text = "结束角度:";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(484, 26);
this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(53, 12);
this.label1.TabIndex = 175;
this.label1.Text = "行坐标:";
//
// btn_subExpectCircleStartAngle
//
this.btn_subExpectCircleStartAngle.Location = new System.Drawing.Point(649, 120);
this.btn_subExpectCircleStartAngle.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_subExpectCircleStartAngle.Name = "btn_subExpectCircleStartAngle";
this.btn_subExpectCircleStartAngle.Size = new System.Drawing.Size(29, 25);
this.btn_subExpectCircleStartAngle.TabIndex = 198;
this.btn_subExpectCircleStartAngle.Text = "-";
this.btn_subExpectCircleStartAngle.UseVisualStyleBackColor = true;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(484, 123);
this.label5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(65, 12);
this.label5.TabIndex = 183;
this.label5.Text = "起始角度:";
//
// tbx_startAngleSpan
//
this.tbx_startAngleSpan.Location = new System.Drawing.Point(681, 121);
this.tbx_startAngleSpan.Margin = new System.Windows.Forms.Padding(2);
this.tbx_startAngleSpan.Name = "tbx_startAngleSpan";
this.tbx_startAngleSpan.Size = new System.Drawing.Size(35, 21);
this.tbx_startAngleSpan.TabIndex = 197;
this.tbx_startAngleSpan.Text = "10";
//
// btn_addExpectCircleStartAngle
//
this.btn_addExpectCircleStartAngle.Location = new System.Drawing.Point(719, 120);
this.btn_addExpectCircleStartAngle.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_addExpectCircleStartAngle.Name = "btn_addExpectCircleStartAngle";
this.btn_addExpectCircleStartAngle.Size = new System.Drawing.Size(29, 25);
this.btn_addExpectCircleStartAngle.TabIndex = 196;
this.btn_addExpectCircleStartAngle.Text = "+";
this.btn_addExpectCircleStartAngle.UseVisualStyleBackColor = true;
//
// btn_runFindCircleTool
//
this.btn_runFindCircleTool.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_runFindCircleTool.Location = new System.Drawing.Point(877, 321);
this.btn_runFindCircleTool.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_runFindCircleTool.Name = "btn_runFindCircleTool";
this.btn_runFindCircleTool.Size = new System.Drawing.Size(98, 45);
this.btn_runFindCircleTool.TabIndex = 173;
this.btn_runFindCircleTool.Text = "运行";
this.btn_runFindCircleTool.UseVisualStyleBackColor = true;
//
// btn_subExpectRingRadiusLength
//
this.btn_subExpectRingRadiusLength.Location = new System.Drawing.Point(649, 225);
this.btn_subExpectRingRadiusLength.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_subExpectRingRadiusLength.Name = "btn_subExpectRingRadiusLength";
this.btn_subExpectRingRadiusLength.Size = new System.Drawing.Size(29, 25);
this.btn_subExpectRingRadiusLength.TabIndex = 195;
this.btn_subExpectRingRadiusLength.Text = "-";
this.btn_subExpectRingRadiusLength.UseVisualStyleBackColor = true;
//
// tbx_ringRadiusLengthSpan
//
this.tbx_ringRadiusLengthSpan.Location = new System.Drawing.Point(681, 226);
this.tbx_ringRadiusLengthSpan.Margin = new System.Windows.Forms.Padding(2);
this.tbx_ringRadiusLengthSpan.Name = "tbx_ringRadiusLengthSpan";
this.tbx_ringRadiusLengthSpan.Size = new System.Drawing.Size(35, 21);
this.tbx_ringRadiusLengthSpan.TabIndex = 194;
this.tbx_ringRadiusLengthSpan.Text = "10";
//
// btn_moveCliperRegion
//
this.btn_moveCliperRegion.Location = new System.Drawing.Point(672, 321);
this.btn_moveCliperRegion.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_moveCliperRegion.Name = "btn_moveCliperRegion";
this.btn_moveCliperRegion.Size = new System.Drawing.Size(76, 26);
this.btn_moveCliperRegion.TabIndex = 172;
this.btn_moveCliperRegion.Text = "编辑卡尺";
this.btn_moveCliperRegion.UseVisualStyleBackColor = true;
//
// btn_addExpectCircleRingRadiusLength
//
this.btn_addExpectCircleRingRadiusLength.Location = new System.Drawing.Point(719, 225);
this.btn_addExpectCircleRingRadiusLength.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_addExpectCircleRingRadiusLength.Name = "btn_addExpectCircleRingRadiusLength";
this.btn_addExpectCircleRingRadiusLength.Size = new System.Drawing.Size(29, 25);
this.btn_addExpectCircleRingRadiusLength.TabIndex = 193;
this.btn_addExpectCircleRingRadiusLength.Text = "+";
this.btn_addExpectCircleRingRadiusLength.UseVisualStyleBackColor = true;
//
// btn_subExpectCircleRadius
//
this.btn_subExpectCircleRadius.Location = new System.Drawing.Point(649, 87);
this.btn_subExpectCircleRadius.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_subExpectCircleRadius.Name = "btn_subExpectCircleRadius";
this.btn_subExpectCircleRadius.Size = new System.Drawing.Size(29, 25);
this.btn_subExpectCircleRadius.TabIndex = 192;
this.btn_subExpectCircleRadius.Text = "-";
this.btn_subExpectCircleRadius.UseVisualStyleBackColor = true;
//
// tbx_expectCircleRadiusSapn
//
this.tbx_expectCircleRadiusSapn.Location = new System.Drawing.Point(681, 88);
this.tbx_expectCircleRadiusSapn.Margin = new System.Windows.Forms.Padding(2);
this.tbx_expectCircleRadiusSapn.Name = "tbx_expectCircleRadiusSapn";
this.tbx_expectCircleRadiusSapn.Size = new System.Drawing.Size(35, 21);
this.tbx_expectCircleRadiusSapn.TabIndex = 191;
this.tbx_expectCircleRadiusSapn.Text = "10";
//
// btn_addExpectCirlceRadius
//
this.btn_addExpectCirlceRadius.Location = new System.Drawing.Point(719, 87);
this.btn_addExpectCirlceRadius.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_addExpectCirlceRadius.Name = "btn_addExpectCirlceRadius";
this.btn_addExpectCirlceRadius.Size = new System.Drawing.Size(29, 25);
this.btn_addExpectCirlceRadius.TabIndex = 190;
this.btn_addExpectCirlceRadius.Text = "+";
this.btn_addExpectCirlceRadius.UseVisualStyleBackColor = true;
//
// btn_addExpectCircleRow
//
this.btn_addExpectCircleRow.Location = new System.Drawing.Point(719, 22);
this.btn_addExpectCircleRow.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_addExpectCircleRow.Name = "btn_addExpectCircleRow";
this.btn_addExpectCircleRow.Size = new System.Drawing.Size(29, 25);
this.btn_addExpectCircleRow.TabIndex = 184;
this.btn_addExpectCircleRow.Text = "+";
this.btn_addExpectCircleRow.UseVisualStyleBackColor = true;
//
// btn_subExpectCircleCol
//
this.btn_subExpectCircleCol.Location = new System.Drawing.Point(649, 55);
this.btn_subExpectCircleCol.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_subExpectCircleCol.Name = "btn_subExpectCircleCol";
this.btn_subExpectCircleCol.Size = new System.Drawing.Size(29, 25);
this.btn_subExpectCircleCol.TabIndex = 189;
this.btn_subExpectCircleCol.Text = "-";
this.btn_subExpectCircleCol.UseVisualStyleBackColor = true;
//
// tbx_expectCircelRowSpan
//
this.tbx_expectCircelRowSpan.Location = new System.Drawing.Point(681, 23);
this.tbx_expectCircelRowSpan.Margin = new System.Windows.Forms.Padding(2);
this.tbx_expectCircelRowSpan.Name = "tbx_expectCircelRowSpan";
this.tbx_expectCircelRowSpan.Size = new System.Drawing.Size(35, 21);
this.tbx_expectCircelRowSpan.TabIndex = 185;
this.tbx_expectCircelRowSpan.Text = "10";
//
// tbx_expectCircleColSpan
//
this.tbx_expectCircleColSpan.Location = new System.Drawing.Point(681, 56);
this.tbx_expectCircleColSpan.Margin = new System.Windows.Forms.Padding(2);
this.tbx_expectCircleColSpan.Name = "tbx_expectCircleColSpan";
this.tbx_expectCircleColSpan.Size = new System.Drawing.Size(35, 21);
this.tbx_expectCircleColSpan.TabIndex = 188;
this.tbx_expectCircleColSpan.Text = "10";
//
// btn_subExpectCircleRow
//
this.btn_subExpectCircleRow.Location = new System.Drawing.Point(649, 22);
this.btn_subExpectCircleRow.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_subExpectCircleRow.Name = "btn_subExpectCircleRow";
this.btn_subExpectCircleRow.Size = new System.Drawing.Size(29, 25);
this.btn_subExpectCircleRow.TabIndex = 186;
this.btn_subExpectCircleRow.Text = "-";
this.btn_subExpectCircleRow.UseVisualStyleBackColor = true;
//
// btn_addExpectCircleCol
//
this.btn_addExpectCircleCol.Location = new System.Drawing.Point(719, 55);
this.btn_addExpectCircleCol.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.btn_addExpectCircleCol.Name = "btn_addExpectCircleCol";
this.btn_addExpectCircleCol.Size = new System.Drawing.Size(29, 25);
this.btn_addExpectCircleCol.TabIndex = 187;
this.btn_addExpectCircleCol.Text = "+";
this.btn_addExpectCircleCol.UseVisualStyleBackColor = true;
//
// panel1
//
this.panel1.Location = new System.Drawing.Point(12, 12);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(453, 405);
this.panel1.TabIndex = 218;
//
// FormFindCircle
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1042, 429);
this.Controls.Add(this.panel1);
this.Controls.Add(this.tbx_threshold);
this.Controls.Add(this.label12);
this.Controls.Add(this.btn_subThreshold);
this.Controls.Add(this.tbx_thresholdSpan);
this.Controls.Add(this.btn_addThreshold);
this.Controls.Add(this.cbx_polarity);
this.Controls.Add(this.btn_switchPolarity);
this.Controls.Add(this.tbx_cliperNum);
this.Controls.Add(this.label8);
this.Controls.Add(this.btn_subCliperNum);
this.Controls.Add(this.label11);
this.Controls.Add(this.tbx_cliperNumSpan);
this.Controls.Add(this.btn_addCliperNum);
this.Controls.Add(this.tbx_ringRadiusLength);
this.Controls.Add(this.tbx_endAngle);
this.Controls.Add(this.tbx_expectCircelRow);
this.Controls.Add(this.tbx_expectCircleCol);
this.Controls.Add(this.tbx_expectCircleradius);
this.Controls.Add(this.tbx_startAngle);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.btn_subExpectCircleEndAngle);
this.Controls.Add(this.tbx_endAngleSpan);
this.Controls.Add(this.label3);
this.Controls.Add(this.btn_addExpectCircleEndAngle);
this.Controls.Add(this.label2);
this.Controls.Add(this.label4);
this.Controls.Add(this.label6);
this.Controls.Add(this.label1);
this.Controls.Add(this.btn_subExpectCircleStartAngle);
this.Controls.Add(this.label5);
this.Controls.Add(this.tbx_startAngleSpan);
this.Controls.Add(this.btn_addExpectCircleStartAngle);
this.Controls.Add(this.btn_runFindCircleTool);
this.Controls.Add(this.btn_subExpectRingRadiusLength);
this.Controls.Add(this.tbx_ringRadiusLengthSpan);
this.Controls.Add(this.btn_moveCliperRegion);
this.Controls.Add(this.btn_addExpectCircleRingRadiusLength);
this.Controls.Add(this.btn_subExpectCircleRadius);
this.Controls.Add(this.tbx_expectCircleRadiusSapn);
this.Controls.Add(this.btn_addExpectCirlceRadius);
this.Controls.Add(this.btn_addExpectCircleRow);
this.Controls.Add(this.btn_subExpectCircleCol);
this.Controls.Add(this.tbx_expectCircelRowSpan);
this.Controls.Add(this.tbx_expectCircleColSpan);
this.Controls.Add(this.btn_subExpectCircleRow);
this.Controls.Add(this.btn_addExpectCircleCol);
this.Name = "FormFindCircle";
this.Text = "FormFindCircle";
this.Load += new System.EventHandler(this.FormFindCircle_Load);
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
public System.Windows.Forms.TextBox tbx_threshold;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.Button btn_subThreshold;
private System.Windows.Forms.TextBox tbx_thresholdSpan;
private System.Windows.Forms.Button btn_addThreshold;
public System.Windows.Forms.ComboBox cbx_polarity;
private System.Windows.Forms.Button btn_switchPolarity;
public System.Windows.Forms.TextBox tbx_cliperNum;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Button btn_subCliperNum;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.TextBox tbx_cliperNumSpan;
private System.Windows.Forms.Button btn_addCliperNum;
public System.Windows.Forms.TextBox tbx_ringRadiusLength;
public System.Windows.Forms.TextBox tbx_endAngle;
public System.Windows.Forms.TextBox tbx_expectCircelRow;
public System.Windows.Forms.TextBox tbx_expectCircleCol;
public System.Windows.Forms.TextBox tbx_expectCircleradius;
public System.Windows.Forms.TextBox tbx_startAngle;
private System.Windows.Forms.GroupBox groupBox2;
public System.Windows.Forms.TextBox tbx_resultCircleRow;
public System.Windows.Forms.TextBox tbx_resultCircleCol;
public System.Windows.Forms.TextBox tbx_resultCircleRadius;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Button btn_subExpectCircleEndAngle;
private System.Windows.Forms.TextBox tbx_endAngleSpan;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Button btn_addExpectCircleEndAngle;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button btn_subExpectCircleStartAngle;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox tbx_startAngleSpan;
private System.Windows.Forms.Button btn_addExpectCircleStartAngle;
public System.Windows.Forms.Button btn_runFindCircleTool;
private System.Windows.Forms.Button btn_subExpectRingRadiusLength;
private System.Windows.Forms.TextBox tbx_ringRadiusLengthSpan;
private System.Windows.Forms.Button btn_moveCliperRegion;
private System.Windows.Forms.Button btn_addExpectCircleRingRadiusLength;
private System.Windows.Forms.Button btn_subExpectCircleRadius;
private System.Windows.Forms.TextBox tbx_expectCircleRadiusSapn;
private System.Windows.Forms.Button btn_addExpectCirlceRadius;
private System.Windows.Forms.Button btn_addExpectCircleRow;
private System.Windows.Forms.Button btn_subExpectCircleCol;
private System.Windows.Forms.TextBox tbx_expectCircelRowSpan;
private System.Windows.Forms.TextBox tbx_expectCircleColSpan;
private System.Windows.Forms.Button btn_subExpectCircleRow;
private System.Windows.Forms.Button btn_addExpectCircleCol;
private System.Windows.Forms.Panel panel1;
}
}

View File

@@ -0,0 +1,22 @@
using System;
using System.Windows.Forms;
using HalconWindow.HalconWindow;
namespace FindCircle
{
public partial class FormFindCircle : Form
{
FindClrcle myFindCircle = null;
public FormFindCircle(object findCircleClass)
{
InitializeComponent();
myFindCircle = (FindClrcle)findCircleClass;
}
private void FormFindCircle_Load(object sender, EventArgs e)
{
HWindow_Final myWindow = new HWindow_Final();
this.panel1.Controls.Add(myWindow);
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,13 @@
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\halcondotnet.dll
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\HalconWindow.exe
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\HalconWindow.pdb
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\halcondotnet.xml
F:\VSCode\VisionEditTest\FindCircle\obj\Debug\FindCircle.csprojResolveAssemblyReference.cache
F:\VSCode\VisionEditTest\FindCircle\obj\Debug\FindCircle.FormFindCircle.resources
F:\VSCode\VisionEditTest\FindCircle\obj\Debug\FindCircle.csproj.GenerateResource.Cache
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\FindCircleTool.dll
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\FindCircleTool.pdb
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\DataStruct.dll
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\DataStruct.pdb
F:\VSCode\VisionEditTest\FindCircle\obj\Debug\FindCircleTool.dll
F:\VSCode\VisionEditTest\FindCircle\obj\Debug\FindCircleTool.pdb

View File

@@ -0,0 +1,13 @@
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\FindCircleTool.dll
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\FindCircleTool.pdb
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\DataStruct.dll
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\halcondotnet.dll
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\HalconWindow.exe
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\DataStruct.pdb
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\HalconWindow.pdb
F:\VSCode\VisionEditTest\FindCircle\bin\Debug\halcondotnet.xml
F:\VSCode\VisionEditTest\FindCircle\obj\Debug\FindCircleTool.csprojResolveAssemblyReference.cache
F:\VSCode\VisionEditTest\FindCircle\obj\Debug\FindCircle.FormFindCircle.resources
F:\VSCode\VisionEditTest\FindCircle\obj\Debug\FindCircleTool.csproj.GenerateResource.Cache
F:\VSCode\VisionEditTest\FindCircle\obj\Debug\FindCircleTool.dll
F:\VSCode\VisionEditTest\FindCircle\obj\Debug\FindCircleTool.pdb

Binary file not shown.

Binary file not shown.

368
FindLine/FindLine.cs Normal file
View File

@@ -0,0 +1,368 @@
using System;
using HalconDotNet;
using DataStruct;
using static DataStruct.DataStruct;
using ToolBase;
using HalconWindow.HalconWindow;
using CommonMethods;
namespace FindLineTool
{
[Serializable]
public class FindLine:IToolBase
{
internal bool toolEnable = true;
/// <summary>
/// 输入姿态
/// </summary>
internal PosXYU inputPose = new PosXYU();
/// <summary>
/// 制作模板时的输入位姿
/// </summary>
internal PosXYU templatePose = new PosXYU();
/// <summary>
/// 期望线起点行坐标
/// </summary>
internal HTuple expectLineStartRow = 200;
/// <summary>
/// 卡尺
/// </summary>
internal HObject contours;
/// <summary>
/// 期望线起点列坐标
/// </summary>
internal HTuple expectLineStartCol = 200;
/// <summary>
/// 期望线终点行坐标
/// </summary>
internal HTuple expectLineEndRow = 200;
/// <summary>
/// 期望线终点列坐标
/// </summary>
internal HTuple expectLineEndCol = 600;
/// <summary>
/// 找边极性,从明到暗或从暗到明
/// </summary>
internal string polarity = "negative";
/// <summary>
/// 卡尺数量
/// </summary>
internal int cliperNum = 20;
/// <summary>
/// 卡尺高
/// </summary>
internal int length = 80;
/// <summary>
/// 卡尺宽
/// </summary>
internal int weidth = 5;
/// <summary>
/// 边阈值
/// </summary>
internal int threshold = 30;
/// <summary>
/// 边Sigma
/// </summary>
internal double sigma = 1.0;
/// <summary>
/// 选择所查找到的边
/// </summary>
internal string edgeSelect = "all";
/// <summary>
/// 分数阈值
/// </summary>
internal double _minScore = 0.5;
internal double minScore
{
get
{
return _minScore;
}
set
{
if(minScore >= 1)
{
_minScore = 1;
}
else if(minScore <= 0)
{
_minScore = 0;
}
else
{
_minScore = value;
}
}
}
/// <summary>
/// 找到的线段
/// </summary>
internal Line resultLine = new Line();
/// <summary>
/// 新的跟随姿态变化后的预期线信息
/// </summary>
HTuple newExpectLineStartRow = new HTuple(200), newExpectLineStartCol = new HTuple(200), newExpectLineEndRow = new HTuple(200), newExpectLineEndCol = new HTuple(600);
/// <summary>
/// 查找到的线的起点行坐标
/// </summary>
private HTuple _resultLineStartRow = 0;
internal HTuple ResultLineStartRow
{
get
{
_resultLineStartRow = Math.Round((double)_resultLineStartRow, 3);
return _resultLineStartRow;
}
set { _resultLineStartRow = value; }
}
/// <summary>
/// 查找到的线的起点列坐标
/// </summary>
private HTuple _resultLineStartCol = 0;
internal HTuple ResultLineStartCol
{
get
{
_resultLineStartCol = Math.Round((double)_resultLineStartCol, 3);
return _resultLineStartCol;
}
set { _resultLineStartCol = value; }
}
/// <summary>
/// 查找到的线的终点行坐标
/// </summary>
private HTuple _resultLineEndRow = 0;
internal HTuple ResultLineEndRow
{
get
{
_resultLineEndRow = Math.Round((double)_resultLineEndRow, 3);
return _resultLineEndRow;
}
set { _resultLineEndRow = value; }
}
/// <summary>
/// 查找到的线的终点列坐标
/// </summary>
private HTuple _resultLineEndCol = 0;
internal HTuple ResultLineEndCol
{
get
{
_resultLineEndCol = Math.Round((double)_resultLineEndCol, 3);
return _resultLineEndCol;
}
set { _resultLineEndCol = value; }
}
/// <summary>
/// 查找到线的方向
/// </summary>
private HTuple _angle = 0;
internal HTuple Angle
{
get
{
_angle = Math.Round((double)_angle, 3);
return _angle;
}
set { _angle = value; }
}
public HObject inputImage { get; set; }
public ToolRunStatu toolRunStatu { get; set; }
public void DispImage()
{
FormFindLine.Instance.myHwindow.HobjectToHimage(inputImage);
}
public void UpdateImage()
{
FormFindLine.Instance.myHwindow.ClearWindow();
DispImage();
}
public void Run()
{
if(inputImage == null)
{
FormFindLine.Instance.TextBoxMessageDisp("图像为空", System.Drawing.Color.Red);
toolRunStatu = ToolRunStatu.Not_Input_Image;
return;
}
try
{
UpdateImage();
if (inputPose != null)
{
HTuple Row = inputPose.X - templatePose.X;
HTuple Col = inputPose.Y - templatePose.Y;
HTuple angle = inputPose.U - templatePose.U;
HTuple _homMat2D;
HOperatorSet.HomMat2dIdentity(out _homMat2D);
HOperatorSet.HomMat2dRotate(_homMat2D, (HTuple)(angle), (HTuple)templatePose.X, (HTuple)templatePose.Y, out _homMat2D);
HOperatorSet.HomMat2dTranslate(_homMat2D, (HTuple)(Row), (HTuple)(Col), out _homMat2D);
//对预期线的起始点做放射变换
HOperatorSet.AffineTransPixel(_homMat2D, (HTuple)expectLineStartRow, (HTuple)expectLineStartCol, out newExpectLineStartRow, out newExpectLineStartCol);
HOperatorSet.AffineTransPixel(_homMat2D, (HTuple)expectLineEndRow, (HTuple)expectLineEndCol, out newExpectLineEndRow, out newExpectLineEndCol);
}
else
{
newExpectLineStartRow = expectLineStartRow;
newExpectLineStartCol = expectLineStartCol;
newExpectLineEndRow = expectLineEndRow;
newExpectLineEndCol = expectLineEndCol;
}
HTuple handleID;
HOperatorSet.CreateMetrologyModel(out handleID);
HTuple width, height;
HOperatorSet.GetImageSize(inputImage, out width, out height);
HOperatorSet.SetMetrologyModelImageSize(handleID, width[0], height[0]);
HTuple index;
HOperatorSet.AddMetrologyObjectLineMeasure(handleID, newExpectLineStartRow, newExpectLineStartCol, newExpectLineEndRow, newExpectLineEndCol, new HTuple(50), new HTuple(20), new HTuple(1), new HTuple(30), new HTuple(), new HTuple(), out index);
//参数在这里设置
HOperatorSet.SetMetrologyObjectParam(handleID, new HTuple("all"), new HTuple("measure_transition"), new HTuple(polarity));
HOperatorSet.SetMetrologyObjectParam(handleID, new HTuple("all"), new HTuple("num_measures"), new HTuple(cliperNum));
HOperatorSet.SetMetrologyObjectParam(handleID, new HTuple("all"), new HTuple("measure_length1"), new HTuple(length));
HOperatorSet.SetMetrologyObjectParam(handleID, new HTuple("all"), new HTuple("measure_length2"), new HTuple(weidth));
HOperatorSet.SetMetrologyObjectParam(handleID, new HTuple("all"), new HTuple("measure_threshold"), new HTuple(threshold));
HOperatorSet.SetMetrologyObjectParam(handleID, new HTuple("all"), new HTuple("measure_select"), new HTuple(edgeSelect));
HOperatorSet.SetMetrologyObjectParam(handleID, new HTuple("all"), new HTuple("measure_sigma"), new HTuple(sigma));
HOperatorSet.SetMetrologyObjectParam(handleID, new HTuple("all"), new HTuple("min_score"), new HTuple(minScore));
HOperatorSet.ApplyMetrologyModel(inputImage, handleID);
//显示所有卡尺
HTuple pointRow, pointCol;
HOperatorSet.GetMetrologyObjectMeasures(out contours, handleID, new HTuple("all"), new HTuple("all"), out pointRow, out pointCol);
HOperatorSet.SetColor(FormFindLine.Instance.myHwindow.hWindowControl.HalconWindow, new HTuple("blue"));
HOperatorSet.DispObj(contours, FormFindLine.Instance.myHwindow.hWindowControl.HalconWindow);
FormFindLine.Instance.myHwindow.DispObj(contours, "blue");
//显示指示找线方向的箭头
HTuple arrowAngle;
HOperatorSet.AngleLx(newExpectLineStartRow, newExpectLineStartCol, newExpectLineEndRow, newExpectLineEndCol, out arrowAngle);
#region
#endregion
arrowAngle = arrowAngle + Math.PI / 2;
arrowAngle = arrowAngle.TupleDeg();
HTuple row = (newExpectLineStartRow + newExpectLineEndRow) / 2;
HTuple column = (newExpectLineStartCol + newExpectLineEndCol) / 2;
double drow, dcolumn;
double arrowLength = length + 100;
if (0 <= arrowAngle && arrowAngle <= 90)
{
drow = Math.Abs(arrowLength * Math.Sin(((HTuple)arrowAngle).TupleRad()));
dcolumn = Math.Abs(arrowLength * Math.Cos(((HTuple)arrowAngle).TupleRad()));
HOperatorSet.DispArrow(FormFindLine.Instance.myHwindow.hWindowControl.HalconWindow, row, column, row - drow, column + dcolumn, 5.0);
}
else if (arrowAngle > 90 && arrowAngle <= 180)
{
drow = arrowLength * Math.Sin(((HTuple)(180 - arrowAngle)).TupleRad());
dcolumn = arrowLength * Math.Cos(((HTuple)(180 - arrowAngle)).TupleRad());
HOperatorSet.DispArrow(FormFindLine.Instance.myHwindow.hWindowControl.HalconWindow, row, column, row - drow, column - dcolumn, 5.0);
}
else if (arrowAngle < 0 && arrowAngle >= -90)
{
drow = arrowLength * Math.Sin(((HTuple)arrowAngle * -1).TupleRad());
dcolumn = arrowLength * Math.Cos(((HTuple)arrowAngle * -1).TupleRad());
HOperatorSet.DispArrow(FormFindLine.Instance.myHwindow.hWindowControl.HalconWindow, row, column, row + drow, column + dcolumn, 5.0);
}
else if (arrowAngle < -90 && arrowAngle >= -180)
{
drow = Math.Abs(arrowLength * Math.Sin(((HTuple)arrowAngle + 180).TupleRad()));
dcolumn = Math.Abs(arrowLength * Math.Cos(((HTuple)arrowAngle + 180).TupleRad()));
HOperatorSet.DispArrow(FormFindLine.Instance.myHwindow.hWindowControl.HalconWindow, row, column, row + drow, column - dcolumn, 5.0);
}
//把点显示出来
HObject cross;
HOperatorSet.GenCrossContourXld(out cross, pointRow, pointCol, new HTuple(12), new HTuple(0));
HOperatorSet.SetColor(FormFindLine.Instance.myHwindow.hWindowControl.HalconWindow, new HTuple("orange"));
HOperatorSet.DispObj(cross, FormFindLine.Instance.myHwindow.hWindowControl.HalconWindow);
FormFindLine.Instance.myHwindow.DispObj(cross, "orange");
//得到所找到的线
HTuple parameter;
HObject line;
HOperatorSet.GetMetrologyObjectResult(handleID, new HTuple("all"), new HTuple("all"), new HTuple("result_type"), new HTuple("all_param"), out parameter);
HOperatorSet.GetMetrologyObjectResultContour(out line, handleID, new HTuple("all"), new HTuple("all"), new HTuple(1.5));
if (parameter.Length >= 4)
{
ResultLineStartRow = parameter[0];
ResultLineStartCol = parameter[1];
ResultLineEndRow = parameter[2];
ResultLineEndCol = parameter[3];
Point start = new Point() { Row = ResultLineStartRow, Col = ResultLineStartCol };
Point end = new Point() { Row = ResultLineEndRow, Col = ResultLineEndCol };
resultLine = new Line() { StartPoint = start, EndPoint = end };
//显示找到的线
HOperatorSet.SetColor(FormFindLine.Instance.myHwindow.hWindowControl.HalconWindow, new HTuple("green"));
// HOperatorSet.DispObj(line, GetWindowHandle(jobName));
FormFindLine.Instance.myHwindow.hWindowControl.HalconWindow.SetLineWidth(2);
FormFindLine.Instance.myHwindow.DispObj(line, "green");
}
HOperatorSet.AngleLx(ResultLineStartRow, ResultLineStartCol, ResultLineEndRow, ResultLineEndCol, out _angle);
HOperatorSet.ClearMetrologyModel(handleID);
FormFindLine.Instance.tbx_resultStartRow.Text = ResultLineStartRow.ToString();
FormFindLine.Instance.tbx_resultStartCol.Text = ResultLineEndCol.ToString();
FormFindLine.Instance.tbx_resultEndRow.Text = ResultLineEndRow.ToString();
FormFindLine.Instance.tbx_resultEndCol.Text = ResultLineEndCol.ToString();
FormFindLine.Instance.TextBoxMessageDisp("运行成功", System.Drawing.Color.Green);
toolRunStatu = ToolRunStatu.Succeed;
}
catch (Exception ex)
{
FormFindLine.Instance.TextBoxMessageDisp("工具运行异常" + ex.Message, System.Drawing.Color.Red);
}
}
internal void DrawExpectLine(HWindow_Final myHwindow)
{
if(inputImage != null)
{
try
{
myHwindow.DrawModel = true;
myHwindow.Focus();
HOperatorSet.SetColor(myHwindow.hWindowControl.HalconWindow, new HTuple("green"));
HOperatorSet.DrawLineMod(myHwindow.hWindowControl.HalconWindow, newExpectLineStartRow, newExpectLineStartCol, newExpectLineEndRow, newExpectLineEndCol, out expectLineStartRow, out expectLineStartCol, out expectLineEndRow, out expectLineEndCol);
if (inputPose != null)
{
templatePose.X = inputPose.X;
templatePose.Y = inputPose.Y;
templatePose.U = inputPose.U;
}
FormFindLine.Instance.tbx_expectLineStartRow.Text = expectLineStartRow.TupleString("10.3f");
FormFindLine.Instance.tbx_expectLineStartCol.Text = expectLineStartCol.TupleString("10.3f");
FormFindLine.Instance.tbx_expectLineEndRow.Text = expectLineEndRow.TupleString("10.3f");
FormFindLine.Instance.tbx_expectLineEndCol.Text = expectLineEndCol.TupleString("10.3f");
myHwindow.DrawModel = false;
Run();
}
catch (Exception ex)
{
FormFindLine.Instance.TextBoxMessageDisp(ex.Message, System.Drawing.Color.Red);
}
}
else
{
FormFindLine.Instance.TextBoxMessageDisp("图像为空", System.Drawing.Color.Red);
}
}
}
}

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{C3BB2B1C-ED0C-4879-A6D3-D86342C5086E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FindLineTool</RootNamespace>
<AssemblyName>FindLineTool</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="halcondotnet">
<HintPath>C:\Program Files\MVTec\HALCON-19.05-Progress\bin\dotnet20\halcondotnet.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FindLine.cs" />
<Compile Include="FormFindLine.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormFindLine.Designer.cs">
<DependentUpon>FormFindLine.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="FormFindLine.resx">
<DependentUpon>FormFindLine.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CommonMethods\CommonHelper.csproj">
<Project>{1C8D0DDC-2086-48A9-9586-F2B643E2FC54}</Project>
<Name>CommonHelper</Name>
</ProjectReference>
<ProjectReference Include="..\DataStruct\DataStruct.csproj">
<Project>{DF3D4D4C-02DF-4F92-9FD4-0A861F64B0EF}</Project>
<Name>DataStruct</Name>
</ProjectReference>
<ProjectReference Include="..\HalconWindowTest\HalconWindow.csproj">
<Project>{4ADC75AE-59C7-4D36-B675-A6CE51B6F5BA}</Project>
<Name>HalconWindow</Name>
</ProjectReference>
<ProjectReference Include="..\ToolBase\ToolBase.csproj">
<Project>{7CD50B44-BF56-4E8E-8FA1-05F6968C1835}</Project>
<Name>ToolBase</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

619
FindLine/FormFindLine.Designer.cs generated Normal file
View File

@@ -0,0 +1,619 @@
namespace FindLineTool
{
partial class FormFindLine
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormFindLine));
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.panel1 = new System.Windows.Forms.Panel();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.label3 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.tbx_expectLineEndRow = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.tbx_expectLineStartCol = new System.Windows.Forms.TextBox();
this.tbx_expectLineEndCol = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.tbx_expectLineStartRow = new System.Windows.Forms.TextBox();
this.label6 = new System.Windows.Forms.Label();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.tbx_resultEndCol = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
this.tbx_resultStartRow = new System.Windows.Forms.TextBox();
this.tbx_resultStartCol = new System.Windows.Forms.TextBox();
this.tbx_resultEndRow = new System.Windows.Forms.TextBox();
this.label7 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.tbx_minScore = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.label14 = new System.Windows.Forms.Label();
this.label13 = new System.Windows.Forms.Label();
this.label12 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
this.tbx_caliperLength = new System.Windows.Forms.TextBox();
this.tbx_threshold = new System.Windows.Forms.TextBox();
this.tbx_caliperNum = new System.Windows.Forms.TextBox();
this.cbx_polarity = new System.Windows.Forms.ComboBox();
this.btn_runFindLineTool = new System.Windows.Forms.Button();
this.btn_moveCliperRegion = new System.Windows.Forms.Button();
this.cbx_edgeSelect = new System.Windows.Forms.ComboBox();
this.txbLog = new System.Windows.Forms.TextBox();
this.tbx_Sigma = new System.Windows.Forms.TextBox();
this.label15 = new System.Windows.Forms.Label();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.checkBox1 = new System.Windows.Forms.CheckBox();
this.checkBox2 = new System.Windows.Forms.CheckBox();
this.tbx_caliperLength2 = new System.Windows.Forms.TextBox();
this.label16 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox3.SuspendLayout();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.splitContainer1.Location = new System.Drawing.Point(0, 2);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.panel1);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.BackColor = System.Drawing.Color.White;
this.splitContainer1.Panel2.Controls.Add(this.groupBox3);
this.splitContainer1.Panel2.Controls.Add(this.groupBox1);
this.splitContainer1.Panel2.Controls.Add(this.label6);
this.splitContainer1.Panel2.Controls.Add(this.groupBox2);
this.splitContainer1.Panel2.Controls.Add(this.tbx_minScore);
this.splitContainer1.Panel2.Controls.Add(this.label5);
this.splitContainer1.Panel2.Controls.Add(this.label16);
this.splitContainer1.Panel2.Controls.Add(this.label14);
this.splitContainer1.Panel2.Controls.Add(this.label15);
this.splitContainer1.Panel2.Controls.Add(this.label13);
this.splitContainer1.Panel2.Controls.Add(this.label12);
this.splitContainer1.Panel2.Controls.Add(this.label11);
this.splitContainer1.Panel2.Controls.Add(this.tbx_caliperLength2);
this.splitContainer1.Panel2.Controls.Add(this.tbx_Sigma);
this.splitContainer1.Panel2.Controls.Add(this.tbx_caliperLength);
this.splitContainer1.Panel2.Controls.Add(this.tbx_threshold);
this.splitContainer1.Panel2.Controls.Add(this.tbx_caliperNum);
this.splitContainer1.Panel2.Controls.Add(this.cbx_polarity);
this.splitContainer1.Panel2.Controls.Add(this.btn_runFindLineTool);
this.splitContainer1.Panel2.Controls.Add(this.btn_moveCliperRegion);
this.splitContainer1.Panel2.Controls.Add(this.cbx_edgeSelect);
this.splitContainer1.Size = new System.Drawing.Size(1129, 479);
this.splitContainer1.SplitterDistance = 563;
this.splitContainer1.TabIndex = 0;
//
// panel1
//
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(563, 479);
this.panel1.TabIndex = 272;
//
// groupBox1
//
this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.tbx_expectLineEndRow);
this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Controls.Add(this.tbx_expectLineStartCol);
this.groupBox1.Controls.Add(this.tbx_expectLineEndCol);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.tbx_expectLineStartRow);
this.groupBox1.Location = new System.Drawing.Point(14, 19);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(224, 150);
this.groupBox1.TabIndex = 318;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "输入坐标";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(22, 89);
this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(77, 12);
this.label3.TabIndex = 276;
this.label3.Text = "终点行坐标:";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(22, 31);
this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(77, 12);
this.label1.TabIndex = 272;
this.label1.Text = "起点行坐标:";
//
// tbx_expectLineEndRow
//
this.tbx_expectLineEndRow.Location = new System.Drawing.Point(110, 87);
this.tbx_expectLineEndRow.Margin = new System.Windows.Forms.Padding(2);
this.tbx_expectLineEndRow.Name = "tbx_expectLineEndRow";
this.tbx_expectLineEndRow.Size = new System.Drawing.Size(71, 21);
this.tbx_expectLineEndRow.TabIndex = 275;
this.tbx_expectLineEndRow.TextChanged += new System.EventHandler(this.tbx_expectLineEndRow_TextChanged);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(22, 119);
this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(77, 12);
this.label4.TabIndex = 278;
this.label4.Text = "终点列坐标:";
//
// tbx_expectLineStartCol
//
this.tbx_expectLineStartCol.Location = new System.Drawing.Point(110, 58);
this.tbx_expectLineStartCol.Margin = new System.Windows.Forms.Padding(2);
this.tbx_expectLineStartCol.Name = "tbx_expectLineStartCol";
this.tbx_expectLineStartCol.Size = new System.Drawing.Size(71, 21);
this.tbx_expectLineStartCol.TabIndex = 273;
this.tbx_expectLineStartCol.TextChanged += new System.EventHandler(this.tbx_expectLineStartCol_TextChanged);
//
// tbx_expectLineEndCol
//
this.tbx_expectLineEndCol.Location = new System.Drawing.Point(110, 116);
this.tbx_expectLineEndCol.Margin = new System.Windows.Forms.Padding(2);
this.tbx_expectLineEndCol.Name = "tbx_expectLineEndCol";
this.tbx_expectLineEndCol.Size = new System.Drawing.Size(71, 21);
this.tbx_expectLineEndCol.TabIndex = 277;
this.tbx_expectLineEndCol.TextChanged += new System.EventHandler(this.tbx_expectLineEndCol_TextChanged);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(22, 60);
this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(77, 12);
this.label2.TabIndex = 274;
this.label2.Text = "起点列坐标:";
//
// tbx_expectLineStartRow
//
this.tbx_expectLineStartRow.Location = new System.Drawing.Point(110, 28);
this.tbx_expectLineStartRow.Margin = new System.Windows.Forms.Padding(2);
this.tbx_expectLineStartRow.Name = "tbx_expectLineStartRow";
this.tbx_expectLineStartRow.Size = new System.Drawing.Size(71, 21);
this.tbx_expectLineStartRow.TabIndex = 271;
this.tbx_expectLineStartRow.TextChanged += new System.EventHandler(this.tbx_expectLineStartRow_TextChanged);
//
// label6
//
this.label6.AutoSize = true;
this.label6.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.Location = new System.Drawing.Point(34, 187);
this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(79, 20);
this.label6.TabIndex = 293;
this.label6.Text = "最小分数:";
//
// groupBox2
//
this.groupBox2.Controls.Add(this.tbx_resultEndCol);
this.groupBox2.Controls.Add(this.label8);
this.groupBox2.Controls.Add(this.tbx_resultStartRow);
this.groupBox2.Controls.Add(this.tbx_resultStartCol);
this.groupBox2.Controls.Add(this.tbx_resultEndRow);
this.groupBox2.Controls.Add(this.label7);
this.groupBox2.Controls.Add(this.label10);
this.groupBox2.Controls.Add(this.label9);
this.groupBox2.Location = new System.Drawing.Point(296, 19);
this.groupBox2.Margin = new System.Windows.Forms.Padding(2);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Padding = new System.Windows.Forms.Padding(2);
this.groupBox2.Size = new System.Drawing.Size(201, 150);
this.groupBox2.TabIndex = 297;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "结果线";
//
// tbx_resultEndCol
//
this.tbx_resultEndCol.Location = new System.Drawing.Point(103, 123);
this.tbx_resultEndCol.Margin = new System.Windows.Forms.Padding(2);
this.tbx_resultEndCol.Name = "tbx_resultEndCol";
this.tbx_resultEndCol.Size = new System.Drawing.Size(71, 21);
this.tbx_resultEndCol.TabIndex = 108;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(27, 126);
this.label8.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(77, 12);
this.label8.TabIndex = 109;
this.label8.Text = "终点列坐标:";
//
// tbx_resultStartRow
//
this.tbx_resultStartRow.Location = new System.Drawing.Point(103, 24);
this.tbx_resultStartRow.Margin = new System.Windows.Forms.Padding(2);
this.tbx_resultStartRow.Name = "tbx_resultStartRow";
this.tbx_resultStartRow.Size = new System.Drawing.Size(71, 21);
this.tbx_resultStartRow.TabIndex = 102;
//
// tbx_resultStartCol
//
this.tbx_resultStartCol.Location = new System.Drawing.Point(103, 57);
this.tbx_resultStartCol.Margin = new System.Windows.Forms.Padding(2);
this.tbx_resultStartCol.Name = "tbx_resultStartCol";
this.tbx_resultStartCol.Size = new System.Drawing.Size(71, 21);
this.tbx_resultStartCol.TabIndex = 104;
//
// tbx_resultEndRow
//
this.tbx_resultEndRow.Location = new System.Drawing.Point(103, 90);
this.tbx_resultEndRow.Margin = new System.Windows.Forms.Padding(2);
this.tbx_resultEndRow.Name = "tbx_resultEndRow";
this.tbx_resultEndRow.Size = new System.Drawing.Size(71, 21);
this.tbx_resultEndRow.TabIndex = 106;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(27, 27);
this.label7.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(77, 12);
this.label7.TabIndex = 103;
this.label7.Text = "起点行坐标:";
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(27, 93);
this.label10.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(77, 12);
this.label10.TabIndex = 107;
this.label10.Text = "终点行坐标:";
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(27, 60);
this.label9.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(77, 12);
this.label9.TabIndex = 105;
this.label9.Text = "起点列坐标:";
//
// tbx_minScore
//
this.tbx_minScore.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.tbx_minScore.Location = new System.Drawing.Point(124, 184);
this.tbx_minScore.Margin = new System.Windows.Forms.Padding(2);
this.tbx_minScore.Name = "tbx_minScore";
this.tbx_minScore.Size = new System.Drawing.Size(92, 26);
this.tbx_minScore.TabIndex = 292;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.Location = new System.Drawing.Point(34, 410);
this.label5.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(79, 20);
this.label5.TabIndex = 279;
this.label5.Text = "结果选择:";
//
// label14
//
this.label14.AutoSize = true;
this.label14.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label14.Location = new System.Drawing.Point(34, 247);
this.label14.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(65, 20);
this.label14.TabIndex = 302;
this.label14.Text = "卡尺长:";
//
// label13
//
this.label13.AutoSize = true;
this.label13.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label13.Location = new System.Drawing.Point(34, 314);
this.label13.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(51, 20);
this.label13.TabIndex = 310;
this.label13.Text = "阈值:";
//
// label12
//
this.label12.AutoSize = true;
this.label12.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label12.Location = new System.Drawing.Point(34, 217);
this.label12.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(65, 20);
this.label12.TabIndex = 300;
this.label12.Text = "卡尺数:";
//
// label11
//
this.label11.AutoSize = true;
this.label11.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label11.Location = new System.Drawing.Point(34, 380);
this.label11.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(51, 20);
this.label11.TabIndex = 298;
this.label11.Text = "极性:";
//
// tbx_caliperLength
//
this.tbx_caliperLength.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.tbx_caliperLength.Location = new System.Drawing.Point(124, 244);
this.tbx_caliperLength.Margin = new System.Windows.Forms.Padding(2);
this.tbx_caliperLength.Name = "tbx_caliperLength";
this.tbx_caliperLength.Size = new System.Drawing.Size(92, 26);
this.tbx_caliperLength.TabIndex = 301;
//
// tbx_threshold
//
this.tbx_threshold.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.tbx_threshold.Location = new System.Drawing.Point(124, 311);
this.tbx_threshold.Margin = new System.Windows.Forms.Padding(2);
this.tbx_threshold.Name = "tbx_threshold";
this.tbx_threshold.Size = new System.Drawing.Size(92, 26);
this.tbx_threshold.TabIndex = 309;
//
// tbx_caliperNum
//
this.tbx_caliperNum.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.tbx_caliperNum.Location = new System.Drawing.Point(124, 214);
this.tbx_caliperNum.Margin = new System.Windows.Forms.Padding(2);
this.tbx_caliperNum.Name = "tbx_caliperNum";
this.tbx_caliperNum.Size = new System.Drawing.Size(92, 26);
this.tbx_caliperNum.TabIndex = 299;
//
// cbx_polarity
//
this.cbx_polarity.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cbx_polarity.FormattingEnabled = true;
this.cbx_polarity.Items.AddRange(new object[] {
"从明到暗",
"从暗到明"});
this.cbx_polarity.Location = new System.Drawing.Point(124, 377);
this.cbx_polarity.Name = "cbx_polarity";
this.cbx_polarity.Size = new System.Drawing.Size(92, 28);
this.cbx_polarity.TabIndex = 314;
this.cbx_polarity.Text = "从明到暗";
//
// btn_runFindLineTool
//
this.btn_runFindLineTool.Location = new System.Drawing.Point(440, 400);
this.btn_runFindLineTool.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.btn_runFindLineTool.Name = "btn_runFindLineTool";
this.btn_runFindLineTool.Size = new System.Drawing.Size(90, 48);
this.btn_runFindLineTool.TabIndex = 270;
this.btn_runFindLineTool.Text = "运行";
this.btn_runFindLineTool.UseVisualStyleBackColor = true;
this.btn_runFindLineTool.Click += new System.EventHandler(this.btn_runFindLineTool_Click);
//
// btn_moveCliperRegion
//
this.btn_moveCliperRegion.Location = new System.Drawing.Point(296, 400);
this.btn_moveCliperRegion.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.btn_moveCliperRegion.Name = "btn_moveCliperRegion";
this.btn_moveCliperRegion.Size = new System.Drawing.Size(90, 48);
this.btn_moveCliperRegion.TabIndex = 269;
this.btn_moveCliperRegion.Text = "编辑卡尺";
this.btn_moveCliperRegion.UseVisualStyleBackColor = true;
this.btn_moveCliperRegion.Click += new System.EventHandler(this.btn_moveCliperRegion_Click);
//
// cbx_edgeSelect
//
this.cbx_edgeSelect.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.cbx_edgeSelect.FormattingEnabled = true;
this.cbx_edgeSelect.Items.AddRange(new object[] {
"all",
"first",
"last"});
this.cbx_edgeSelect.Location = new System.Drawing.Point(124, 408);
this.cbx_edgeSelect.Name = "cbx_edgeSelect";
this.cbx_edgeSelect.Size = new System.Drawing.Size(92, 28);
this.cbx_edgeSelect.TabIndex = 317;
this.cbx_edgeSelect.Text = "all";
//
// txbLog
//
this.txbLog.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txbLog.Location = new System.Drawing.Point(0, 487);
this.txbLog.Name = "txbLog";
this.txbLog.ReadOnly = true;
this.txbLog.Size = new System.Drawing.Size(1129, 21);
this.txbLog.TabIndex = 274;
//
// tbx_Sigma
//
this.tbx_Sigma.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.tbx_Sigma.Location = new System.Drawing.Point(126, 344);
this.tbx_Sigma.Margin = new System.Windows.Forms.Padding(2);
this.tbx_Sigma.Name = "tbx_Sigma";
this.tbx_Sigma.Size = new System.Drawing.Size(92, 26);
this.tbx_Sigma.TabIndex = 309;
//
// label15
//
this.label15.AutoSize = true;
this.label15.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label15.Location = new System.Drawing.Point(36, 347);
this.label15.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label15.Name = "label15";
this.label15.Size = new System.Drawing.Size(54, 20);
this.label15.TabIndex = 310;
this.label15.Text = "Sigma:";
//
// groupBox3
//
this.groupBox3.Controls.Add(this.checkBox2);
this.groupBox3.Controls.Add(this.checkBox1);
this.groupBox3.Location = new System.Drawing.Point(296, 200);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(213, 96);
this.groupBox3.TabIndex = 319;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "显示";
//
// checkBox1
//
this.checkBox1.AutoSize = true;
this.checkBox1.Location = new System.Drawing.Point(29, 29);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(108, 16);
this.checkBox1.TabIndex = 0;
this.checkBox1.Text = "结果显示矩形框";
this.checkBox1.UseVisualStyleBackColor = true;
//
// checkBox2
//
this.checkBox2.AutoSize = true;
this.checkBox2.Location = new System.Drawing.Point(29, 60);
this.checkBox2.Name = "checkBox2";
this.checkBox2.Size = new System.Drawing.Size(96, 16);
this.checkBox2.TabIndex = 0;
this.checkBox2.Text = "结果显示交点";
this.checkBox2.UseVisualStyleBackColor = true;
//
// tbx_caliperLength2
//
this.tbx_caliperLength2.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.tbx_caliperLength2.Location = new System.Drawing.Point(124, 277);
this.tbx_caliperLength2.Margin = new System.Windows.Forms.Padding(2);
this.tbx_caliperLength2.Name = "tbx_caliperLength2";
this.tbx_caliperLength2.Size = new System.Drawing.Size(92, 26);
this.tbx_caliperLength2.TabIndex = 301;
//
// label16
//
this.label16.AutoSize = true;
this.label16.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label16.Location = new System.Drawing.Point(34, 280);
this.label16.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(65, 20);
this.label16.TabIndex = 302;
this.label16.Text = "卡尺宽:";
//
// FormFindLine
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1127, 508);
this.Controls.Add(this.txbLog);
this.Controls.Add(this.splitContainer1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormFindLine";
this.Text = "找线工具";
this.Load += new System.EventHandler(this.FormFindLine_Load);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.groupBox3.ResumeLayout(false);
this.groupBox3.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label6;
public System.Windows.Forms.TextBox tbx_expectLineEndRow;
public System.Windows.Forms.TextBox tbx_expectLineStartCol;
private System.Windows.Forms.GroupBox groupBox2;
public System.Windows.Forms.TextBox tbx_resultEndCol;
private System.Windows.Forms.Label label8;
public System.Windows.Forms.TextBox tbx_resultStartRow;
public System.Windows.Forms.TextBox tbx_resultStartCol;
public System.Windows.Forms.TextBox tbx_resultEndRow;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label label3;
public System.Windows.Forms.TextBox tbx_expectLineStartRow;
public System.Windows.Forms.TextBox tbx_minScore;
private System.Windows.Forms.Label label2;
public System.Windows.Forms.TextBox tbx_expectLineEndCol;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label14;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.Label label11;
public System.Windows.Forms.TextBox tbx_caliperLength;
public System.Windows.Forms.TextBox tbx_threshold;
public System.Windows.Forms.TextBox tbx_caliperNum;
public System.Windows.Forms.ComboBox cbx_polarity;
public System.Windows.Forms.Button btn_runFindLineTool;
private System.Windows.Forms.Button btn_moveCliperRegion;
public System.Windows.Forms.ComboBox cbx_edgeSelect;
public System.Windows.Forms.TextBox txbLog;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label15;
public System.Windows.Forms.TextBox tbx_Sigma;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.CheckBox checkBox2;
private System.Windows.Forms.CheckBox checkBox1;
private System.Windows.Forms.Label label16;
public System.Windows.Forms.TextBox tbx_caliperLength2;
}
}

170
FindLine/FormFindLine.cs Normal file
View File

@@ -0,0 +1,170 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CommonMethods;
using HalconDotNet;
using HalconWindow.HalconWindow;
namespace FindLineTool
{
public partial class FormFindLine : Form
{
public FindLine myFindLine = null;
public IToolInfo myToolInfo = null;
public HWindow_Final myHwindow = new HWindow_Final();
/// <summary>
/// 窗体对象实例
/// </summary>
private static FormFindLine _instance;
public static FormFindLine Instance
{
get
{
lock (_instance)
{
if (_instance == null)
{
object line = new object();
_instance = new FormFindLine(ref line);
}
return _instance;
}
}
}
public FormFindLine(ref object findLine)
{
InitializeComponent();
_instance = this;
myToolInfo = (IToolInfo)findLine;
myFindLine = (FindLine)myToolInfo.tool;
myFindLine.inputImage = ComGlobalParams.inputImageGlobal; // 暂时直接将图像传递给该工具
myFindLine.DispImage();
}
private void FormFindLine_Load(object sender, EventArgs e)
{
this.panel1.Controls.Add(myHwindow);
myHwindow.Dock = DockStyle.Fill;
InitTool();
}
private void btn_moveCliperRegion_Click(object sender, EventArgs e)
{
myFindLine.DrawExpectLine(myHwindow);
}
public void TextBoxMessageDisp(string mes, Color setColor)
{
txbLog.BackColor = setColor;
txbLog.Text = mes;
txbLog.Font = new Font("微软雅黑", 10, FontStyle.Bold);
CommonMethods.CommonMethods.Delay(2000);
txbLog.BackColor = Color.White;
}
private void btn_runFindLineTool_Click(object sender, EventArgs e)
{
// 更改界面中参数,实时更新类中参数
myFindLine.expectLineStartRow = Convert.ToDouble(tbx_expectLineStartRow.Text.Trim());
myFindLine.expectLineStartCol = Convert.ToDouble(tbx_expectLineStartCol.Text.Trim());
myFindLine.expectLineEndRow = Convert.ToDouble(tbx_expectLineEndRow.Text.Trim());
myFindLine.expectLineEndCol = Convert.ToDouble(tbx_expectLineEndCol.Text.Trim());
// 运行参数
myFindLine.minScore = Convert.ToDouble(tbx_minScore.Text.Trim());
myFindLine.cliperNum = Convert.ToInt16(tbx_caliperNum.Text.Trim());
myFindLine.threshold = Convert.ToInt16(tbx_threshold.Text.Trim());
myFindLine.length = Convert.ToInt16(tbx_caliperLength.Text.Trim());
myFindLine.weidth = Convert.ToInt16(tbx_caliperLength2.Text.Trim());
myFindLine.polarity = cbx_polarity.SelectedItem.ToString() == "由明到暗" ? "negative":"positive";
myFindLine.edgeSelect = cbx_edgeSelect.SelectedItem.ToString();
myFindLine.sigma = Convert.ToDouble(tbx_Sigma.Text.Trim());
// Run
myFindLine.Run();
}
public void InitTool()
{
this.Text = myToolInfo.toolName;
btn_runFindLineTool.Focus();
Application.DoEvents();
//myFindLine.Run(); //运行一下,使卡尺显示出来
tbx_expectLineStartRow.Text = myFindLine.expectLineStartRow.ToString();
tbx_expectLineStartCol.Text = myFindLine.expectLineStartCol.ToString();
tbx_expectLineEndRow.Text = myFindLine.expectLineEndRow.ToString();
tbx_expectLineEndCol.Text = myFindLine.expectLineEndCol.ToString();
cbx_edgeSelect.Text = myFindLine.edgeSelect;
tbx_minScore.Text = myFindLine.minScore.ToString();
cbx_polarity.Text = myFindLine.polarity == "positive" ? "由暗到明" : "由明到暗";
tbx_caliperNum.Text = myFindLine.cliperNum.ToString();
tbx_caliperLength.Text = myFindLine.length.ToString();
tbx_threshold.Text = myFindLine.threshold.ToString();
tbx_Sigma.Text = myFindLine.sigma.ToString();
tbx_caliperLength2.Text = myFindLine.weidth.ToString();
}
#region
private void tbx_expectLineStartRow_TextChanged(object sender, EventArgs e)
{
try
{
myFindLine.expectLineStartRow = Convert.ToDouble(tbx_expectLineStartRow.Text.Trim());
}
catch
{
TextBoxMessageDisp("输入了非法字符已自动替换为默认值200", Color.Red);
tbx_expectLineStartRow.Text = "200";
}
}
private void tbx_expectLineStartCol_TextChanged(object sender, EventArgs e)
{
try
{
myFindLine.expectLineStartCol = Convert.ToDouble(tbx_expectLineStartCol.Text.Trim());
}
catch
{
TextBoxMessageDisp("输入了非法字符已自动替换为默认值200", Color.Red);
tbx_expectLineStartCol.Text = "200";
}
}
private void tbx_expectLineEndRow_TextChanged(object sender, EventArgs e)
{
try
{
myFindLine.expectLineEndRow = Convert.ToDouble(tbx_expectLineEndRow.Text.Trim());
}
catch
{
TextBoxMessageDisp("输入了非法字符已自动替换为默认值200", Color.Red);
tbx_expectLineEndRow.Text = "200";
}
}
private void tbx_expectLineEndCol_TextChanged(object sender, EventArgs e)
{
try
{
myFindLine.expectLineEndCol = Convert.ToDouble(tbx_expectLineEndCol.Text.Trim());
}
catch
{
TextBoxMessageDisp("输入了非法字符已自动替换为默认值600", Color.Red);
tbx_expectLineEndCol.Text = "600";
}
}
#endregion
}
}

205
FindLine/FormFindLine.resx Normal file
View File

@@ -0,0 +1,205 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAIyAAAAEAIACoEgAAFgAAACgAAAAjAAAAQAAAAAEAIAAAAAAAgBEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAGyU0ZFdeafFscnz/bHJ8/2xyfP9scnz/bHJ8/2xyfP9scnz/bHJ8/2xyfP9scnz/bHJ8/2xy
fP9scnz/bHJ8/2xyfP9scnz/bHJ8/2xyfP9scnz/bHJ8/2xyfP9scnz/bHJ8/2xyfP9scnz/bHJ8/2xy
fP9scnz/bHJ8/1dfavUcJjRsAAAAABkjMgZbYWnz+fHY//nv0f/579H/+e/R//nv0f/579H/+e/R//nv
0f/579H/+e/R//nv0f/579H/+e/R//nv0f/579H/+e/R//nv0f/579H/+e/R//nv0f/579H/+e/R//nv
0f/579H/+e/R//nv0f/579H/+e/R//nv0f/579H/+vHX/19lbPcZIzIIGSQzCnBvZP/p2qj/QH6T/y6H
q/8th6v/Loer/2aLjv/15K7/9eSu//Tkrf/15K7/9eSu//Xjrf/15K7/9eSu//Xjrv/15K7/9eSt//Tj
rf/1463/9OSu//Tkrv/15K7/9OOt//Tjrf/15K7/9eSu//Tkrv/1467/9eSu//Tkrf/0467/cnJl/xki
Mg4ZJDMKcG9j/+fYp/9aiJb/Wpqy/1qasv9amrL/dpGQ//Xkrv/1467/9eSt//Xjrv/15K7/9eSt//Xk
rv/05K7/9eSt//Xkrv/1463/9OOt//Xkrv/05K3/9OOt//Xkrv/0463/9eOt//Xkrv/15K7/9OSu//Xj
rf/15K7/9OOt//Pjrf9xcGT/GSIyDhkkMwpwb2P/9OOt//Xkrv/15K7/9OOt//Tkrv/1467/9eSu//Xk
rv/05K3/9eSu//Tkrv/1463/9eSu//Tkrv/0463/9eSu//Tjrf/05K7/9eOu//Tkrf/0467/9eSu//Tj
rf/15K7/9eSu//Xjrf/05K7/9eSu//Xkrv/0463/cnJk/3FwZP8ZIjIOGSQzCnBvY//1463/9OSu//Xk
rv/15K3/9OSt//Tkrv/15K7/9eSu//Xkrf/15K7/9eSu//Xkrf/1467/9eSt//Xkrv/15K3/9eOt//Tk
rf/15K7/9OSt//Tkrv/15K7/9OOt//Tjrf/15K7/9eOu//Tkrv/1463/9eSu//Tjrf9qamD/cXBk/xki
Mg4ZJDMKcG9j//Tjrf/15K7/9eOu//Tjrf/05K3/9eSu//Xkrv/15K7/9OSt//Xkrv/15K7/9eOt//Xk
rv/15K7/9eOu//Xkrv/15K3/9OOt//Xjrf/05K7/9OSu//Xkrv/0463/9OOt//Xkrv/15K7/9OSu//Xj
rv/15K7/9OSt/2pqYP9xcGT/GSIyDhkkMwpwb2P/9OOt//Xkrv/15K7/9eSt//Tjrf/15K7/9eSu//Xj
rv/15K3/9eOu//Xkrv/15K3/9eSu//Tkrv/15K3/9eSu//Xjrf/0463/9eSu//Tkrf/0463/9eSu//Tj
rf/1463/9eSu//Xkrv/05K7/9eOt//Xkrv/0463/vbOP/3FwZP8ZIjIOGSQzCnBvY//0463/9eSu//Xk
rv/0463/9OSu//Xjrv/15K7/9eSu//Tkrf/15K7/9OSu//Xjrf/15K7/9OSu//Tjrf/15K7/9OOt//Tk
rv/1467/9OSt//Tjrv/15K7/9OOt//Xkrv/15K7/9eOt//Tkrv/15K7/9eSu//Tjrf92dGb/cXBk/xki
Mg4ZJDMKcG9j//Xjrf/05K7/9eSu//Xkrf/05K3/9OSu//Xkrv/15K7/9eSt//Xkrv/15K7/9eSt//Xj
rv/15K3/9eSu//Xkrf/1463/9OSt//Xkrv/05K3/9OSu//Xkrv/0463/9OOt//Xkrv/1467/9OSu//Xj
rf/15K7/9OOt/8/CmP9xcGT/GSIyDhkkMwpwb2P/9OOt//Xkrv/1467/9OOt//Tkrf/15K7/9eSu//Xk
rv/05K3/9eSu//Xkrv/1463/8+Ks/5CMdf90c2b/dHNm/3RzZv+Gg3D/796q//Tkrv/05K7/9eSu//Tj
rf/0463/9eSu//Xkrv/05K7/9eOu//Xkrv/05K3/9OOu/3FwZP8ZIjIOGSQzCnBvY//0463/9eSu//Xk
rv/15K3/9OOt//Xkrv/15K7/9eOu//Xkrf/1467/9eSu//Xkrf/VyJz/S0KD/4lp6P+Jaej/iWno/1hL
mf/EuZL/9OSt//Tjrf/15K7/9OOt//Xjrf/15K7/9eSu//Tkrv/1463/9eSu//Tjrf/05K7/cXBk/xki
Mg4ZJDMKcG9j//Tjrf/15K7/9eSu//Tjrf/05K7/9eOu//Xkrv/15K7/9OSt//Xkrv/05K7/9eOt/9DE
mf9TSpD/lnn+/5R3+/+WeP7/Y1Wq/8K3kf/05K3/9OOu//Xkrv/0463/9eSu//Xkrv/1463/9OSu//Xk
rv/15K7/9OOt//Tkrv9xcGT/GSIyDhkkMwpwb2L/9OOs//TjrP/046z/9OOs//TjrP/046z/9OOs//Tj
rP/046z/9OOs//TjrP/046z/0MOX/1NKkP+Xef//Mk16/4tx7P9jVar/wreQ//TjrP/046z/9OOs//Tj
rP/046z/9OOs//TjrP/046z/9OOs//TjrP/046z/9OOs/3FwY/8ZIjIOGSMyPlVVQ/+woVv/sKFb/7Ch
W/+woVv/sKFb/7ChW/+woVv/sKFb/7ChW/+woVv/sKFb/7ChW/+XjFT/U0qQ/5d5/v8oVHv/h27m/2NV
qv+NhFL/sKFb/7ChW/+woVv/sKFb/7ChW/+woVv/sKFb/7ChW/+woVv/sKFb/7ChW/+woVv/WVlE/xkj
MkJCRTz/iH9N/4h/Tf+If03/iH9N/4h/Tf+If03/iH9N/4h/Tf+If03/iH9N/4h/Tf+If03/iH9N/3Vw
Sf9TSpD/cGbK/x6Drv9iY7z/Y1Wq/25qR/+If03/iH9N/4h/Tf+If03/iH9N/4h/Tf+If03/iH9N/4h/
Tf+If03/iH9N/4h/Tf+If03/REc9/2dnWf/ZyY//wLOC/8K1g//u3Jv/w7aD/8u9h//w3p3/8N6d//De
nf/w3p3/8N6d//Denf/w3p3/zL+L/1NKkP9Uc6//K8X3/05/tf9jVar/v7OE//Denf/w3p3/8N6d//De
nf/w3p3/8N6d//Denf/w3p3/8N6d//Denf/w3p3/8N6d//Denf9paFn/aGhf/8W6k/+blXv/npd9/+7e
qv+el33/rKSF//Tkrv/15K7/9eSu//Xkrf/15K7/9eSu//Xkrf/QxJn/U0qQ/4Jr2v+Hf7j/gWzW/2NV
qv/Ct5H/9OSt//Tkrv/15K7/9OOt//Tjrf/15K7/9eOu//Tkrv/1463/9eSu//Tjrf/15K7/9OOt/2lp
X/9oaF//9eSu//Tjrf/15K7/9eOu//Tjrf/05K3/9eSu//Xkrv/15K7/9OSt//Xkrv/15K7/9eOt/9DE
mf9VTZH/mHv+/5h7//+Ye///ZVir/8K3kf/05K7/9OSu//Xkrv/0463/9OOt//Xkrv/15K7/9OSu//Xj
rv/15K7/9OSt//Tjrv/15K7/aWlf/2hoX//15K7/9OOt//Xkrv/15K7/9eSt//Tjrf/15K7/9eSu//Xj
rv/15K3/9eOu//Xkrv/15K3/6Nmn/1RZX/9pbnz/aW58/2lufP9SWGH/282f//Tkrf/0463/9eSu//Tj
rf/1463/9eSu//Xkrv/05K7/9eOt//Xkrv/0463/9OSu//Tjrv9paV//aGhf//Xkrv/0463/9eSu//Xk
rv/0463/9OSu//Xjrv/15K7/9eSu//Tkrf/15K7/9OSu//Xjrf/15K7/9OSu//Tjrf/15K7/9OOt//Tk
rv/1467/9OSt//Tjrv/15K7/9OOt//Xkrv/15K7/9eOt//Tkrv/15K7/9eSu//Tjrf/05K7/9OSu/2lp
X/9oaF//9OSu//Xjrf/05K7/9eSu//Xkrf/05K3/9OSu//Xkrv/15K7/9eSt//Xkrv/15K7/9eSt//Xj
rv/15K3/9eSu//Xkrf/1463/9OSt//Xkrv/05K3/9OSu//Xkrv/0463/9OOt//Xkrv/1467/9OSu//Xj
rf/15K7/9OOt//Xkrv/0463/aWlf/2lqYv/15K7/9OOt//Xkrv/1467/9OOt//Tkrf/15K7/9eSu//Xk
rv/05K3/9eSu//Xkrv/1463/9eSu//Xkrv/1467/9eSu//Xkrf/0463/9eOt//Tkrv/05K7/9eSu//Tj
rf/0463/9eSu//Xkrv/05K7/9eOu//Xkrv/05K3/9OOu//Xkrv9rbGT/Q0tX4fDs3v/79eH/+/Xh//v1
4f/79eH/+/Xh//v14f/79eH/+/Xh//v14f/79eH/+/Xh//v14f/79eH/+/Xh//v14f/79eH/+/Xh//v1
4f/79eH/+/Xh//v14f/79eH/+/Xh//v14f/79eH/+/Xh//v14f/79eH/+/Xh//v14f/79eH/8+7g/0hP
W+UZIzM0KjNBtz9IVMk/SFTJP0hUyT9IVMk/SFTJP0hUyTlFU/M3WXL/OkNQ6T9HVMs/R1TLP0dUyz9H
VMs/R1TLP0dUyz9HVMs/R1TLP0dUyz9HVMs/R1TLP0dUyz9HVMs6Q0/pN1lx/zhFVPU/SFTJP0hUyT9I
VMk/SFTJP0hUyT9IVMkqM0G5GSMzNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGjRIyRu3
7f8aJDOZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoj
M5cbseb/Gj1TzQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAaNEjJG7nu/xokM5kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAGSQzlxuz5v8aPVPNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABo0R8kbue7/GiQzmwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaJDOXG7Xo/xo7UM0AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGig4rR25
7P8aOU7XGiQzBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSMyBho2
Ss8duu7/Gio7swAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAZJDNcOo+v/xuTwP8ZMUbBGSMyhRokM4MZIzKDGiMzgxokM4MaJDODGiQzgxoj
M4MZIzODGSQzgxkjMoUZMEW/G5C7/zyUtf8aJDNiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkjMgQtN0W7cbHI/0zC7v8xqNj/MKbX/zCm
1/8wptf/MKbX/zCm1/8wptf/MKbX/zCm1/8wptf/MafX/0vB7v9xs8v/LzpHvxkjMgYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkk
MgoeKDeHUlll5Wlxe/1qcnz/anJ8/2pyfP9qcnz/anJ8/2pyfP9qcnz/anJ8/2pyfP9qcXv9U1pm5x8o
N4kZIzIKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAGAAAACAAAAAIAAAAIAA
AAAgAAAAgAAAACAAAACAAAAAIAAAAIAAAAAgAAAAgAAAACAAAACAAAAAIAAAAIAAAAAgAAAAgAAAACAA
AACAAAAAIAAAAIAAAAAgAAAAgAAAACAAAACAAAAAIAAAAIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAA
AAD/H/8f4AAAAP8f/x/gAAAA/x//H+AAAAD/H/8f4AAAAP+AAD/gAAAA/4AAP+AAAAD/wAB/4AAAAA==
</value>
</data>
</root>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,13 @@
F:\VSCode\VisionEditTest\FindLine\bin\Debug\FindLineTool.dll
F:\VSCode\VisionEditTest\FindLine\bin\Debug\FindLineTool.pdb
F:\VSCode\VisionEditTest\FindLine\bin\Debug\DataStruct.dll
F:\VSCode\VisionEditTest\FindLine\bin\Debug\halcondotnet.dll
F:\VSCode\VisionEditTest\FindLine\bin\Debug\HalconWindow.exe
F:\VSCode\VisionEditTest\FindLine\bin\Debug\DataStruct.pdb
F:\VSCode\VisionEditTest\FindLine\bin\Debug\HalconWindow.pdb
F:\VSCode\VisionEditTest\FindLine\bin\Debug\halcondotnet.xml
F:\VSCode\VisionEditTest\FindLine\obj\Debug\FindLine.csprojResolveAssemblyReference.cache
F:\VSCode\VisionEditTest\FindLine\obj\Debug\FindLine.FormFindLine.resources
F:\VSCode\VisionEditTest\FindLine\obj\Debug\FindLine.csproj.GenerateResource.Cache
F:\VSCode\VisionEditTest\FindLine\obj\Debug\FindLineTool.dll
F:\VSCode\VisionEditTest\FindLine\obj\Debug\FindLineTool.pdb

Binary file not shown.

View File

@@ -0,0 +1,17 @@
F:\VSCode\VisionEditTest\FindLine\bin\Debug\FindLineTool.dll
F:\VSCode\VisionEditTest\FindLine\bin\Debug\FindLineTool.pdb
F:\VSCode\VisionEditTest\FindLine\bin\Debug\CommonMethods.dll
F:\VSCode\VisionEditTest\FindLine\bin\Debug\DataStruct.dll
F:\VSCode\VisionEditTest\FindLine\bin\Debug\halcondotnet.dll
F:\VSCode\VisionEditTest\FindLine\bin\Debug\HalconWindow.exe
F:\VSCode\VisionEditTest\FindLine\bin\Debug\ToolBase.dll
F:\VSCode\VisionEditTest\FindLine\bin\Debug\CommonMethods.pdb
F:\VSCode\VisionEditTest\FindLine\bin\Debug\DataStruct.pdb
F:\VSCode\VisionEditTest\FindLine\bin\Debug\HalconWindow.pdb
F:\VSCode\VisionEditTest\FindLine\bin\Debug\ToolBase.pdb
F:\VSCode\VisionEditTest\FindLine\bin\Debug\halcondotnet.xml
F:\VSCode\VisionEditTest\FindLine\obj\Debug\FindLineTool.csprojResolveAssemblyReference.cache
F:\VSCode\VisionEditTest\FindLine\obj\Debug\FindLineTool.FormFindLine.resources
F:\VSCode\VisionEditTest\FindLine\obj\Debug\FindLineTool.csproj.GenerateResource.Cache
F:\VSCode\VisionEditTest\FindLine\obj\Debug\FindLineTool.dll
F:\VSCode\VisionEditTest\FindLine\obj\Debug\FindLineTool.pdb

Binary file not shown.

Binary file not shown.

46
HalconTool/FormHalconTool.Designer.cs generated Normal file
View File

@@ -0,0 +1,46 @@
namespace HalconTool
{
partial class FormHalconTool
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// FormHalconTool
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(816, 438);
this.Name = "FormHalconTool";
this.Text = "FormHalconTool";
this.ResumeLayout(false);
}
#endregion
}
}

View File

@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HalconTool
{
public partial class FormHalconTool : Form
{
public FormHalconTool()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -6,7 +6,7 @@ using System.Threading;
using System.Threading.Tasks;
using HalconDotNet;
namespace VisionEdit.ToolLib
namespace HalconTool
{
public class HalconTool
{

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{F5669FB7-77EC-44B9-898B-6D575B7D26EA}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>HalconTool</RootNamespace>
<AssemblyName>HalconTool</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="halcondotnet">
<HintPath>C:\Program Files\MVTec\HALCON-19.05-Progress\bin\dotnet20\halcondotnet.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FormHalconTool.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormHalconTool.Designer.cs">
<DependentUpon>FormHalconTool.cs</DependentUpon>
</Compile>
<Compile Include="HalconTool.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="FormHalconTool.resx">
<DependentUpon>FormHalconTool.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

Some files were not shown because too many files have changed in this diff Show More