WPF引导定位软件-目标基准位置确定-线线交点算法记录在做模板时候找线工具的位置然后模板匹配之后跟着原来的一起移动1.弹出找线工具2.获取找线工具数据3.保存找线工具坐标4.设置直线测量参数5.直线拟合6.直线测量结果显示模板匹配跟随流程1.保存模板区域的中心点和0度2.获取模板匹配后的点和角度3.生成仿射矩阵4.对找线工具进行仿射变换一 UI设计TabItemHeader线线交点GridGrid.ColumnDefinitionsColumnDefinitionWidth2*/ColumnDefinitionWidth6*/ColumnDefinitionWidth2*//Grid.ColumnDefinitionsextoolkit:PropertyGridNamepropertyGrid_LinesBackgroundAliceBlueGrid.Column0/extoolkit:PropertyGridWindowsFormsHost Grid.Column1halconTool:HWindow_Finalx:NamehWindow_Final_Lines//WindowsFormsHostStackPanel Grid.Column2Buttonx:Namebtn_LoadImage2Content加载图像Margin10CursorHand/ButtonButtonx:Namebtn_SearchRegion2Content搜索区域Margin10CursorHand/ButtonButtonx:Namebtn_DrawModel2Content绘制模板Margin10CursorHand/ButtonButtonx:Namebtn_SaveModel2Content保存模板Margin10CursorHand/ButtonButtonx:Namebtn_ModelMatch2Content模板匹配Margin10CursorHand/ButtonButtonx:Namebtn_FindLine1Content找线1Margin10CursorHand/ButtonButtonx:Namebtn_FindLine2Content找线2Margin10CursorHand/ButtonButtonx:Namebtn_SaveParams2Content保存参数Margin10CursorHand/Button/StackPanel/Grid/TabItem二 FitLinesModel/// summary/// 拟合直线模型/// /summarypublicclassFitLinesModel{[Category(创建模板参数),Description(金字塔层数*[定义数组][开始层和结束层][可以达到多层金字塔搜索])]publicintnumLevels{get;set;}5;//金字塔层数*[定义数组][开始层和结束层][可以达到多层金字塔搜索][Category(创建模板参数),Description(开始角度//最小角度*)]publicdoubleangleStart{get;set;}-3.14;//开始角度//最小角度*[Category(创建模板参数),Description(角度范围//最大角度*)]publicdoubleangleExtent{get;set;}6.28;//角度范围//最大角度*[Category(创建模板参数),Description(角度步长//设定值越小程序耗时越长//auto)]publicstringangleStep{get;set;}auto;//角度步长//设定值越小程序耗时越长//auto[Category(创建模板参数),Description(最小缩放//最小比例*)]publicdoublescaleMin{get;set;}0.7;//最小缩放//最小比例*[Category(创建模板参数),Description(最大缩放//最大比例*)]publicdoublescaleMax{get;set;}1.3;//最大缩放//最大比例*[Category(创建模板参数),Description(缩放步长)]publicstringscaleStep{get;set;}auto;//缩放步长[Category(创建模板参数),Description(优化方式)]publicstringoptimization{get;set;}auto;//优化方式[Category(创建模板参数),Description(极性控制*)]publicstringmetric{get;set;}use_polarity;//极性控制*//黑白对比度一致//使用极性use_polarity//黑白对比度不一致//忽略极性ignore_global_polarity//黑白对比局部不一致//忽略局部极性ignore_local_polarity[Category(创建模板参数),Description(对比度*)]publicintcontrast{get;set;}30;//对比度*[Category(创建模板参数),Description(最小灰度值*//auto)]publicstringminContrast{get;set;}auto;//最小灰度值*//auto[Category(查询模板参数),Description(开始角度//最小角度*)]publicdoubleangleStart_F{get;set;}-3.14;//开始角度//最小角度*[Category(查询模板参数),Description(角度范围//最大角度*)]publicdoubleangleExtent_F{get;set;}6.28;//角度范围//最大角度*[Category(查询模板参数),Description(最小缩放//最小比例*)]publicdoublescaleMin_F{get;set;}0.7;//最小缩放//最小比例*[Category(查询模板参数),Description(最大缩放//最大比例*)]publicdoublescaleMax_F{get;set;}1.3;//最大缩放//最大比例*[Category(查询模板参数),Description(得分)]publicdoubleminScore_F{get;set;}0.3;//得分[Category(查询模板参数),Description(匹配个数)]publicintnumMatches_F{get;set;}1;//匹配个数[Category(查询模板参数),Description(最大重叠)]publicdoublemaxOverlap_F{get;set;}0.5;//最大重叠[Category(查询模板参数),Description(是否亚像素//一般不选择//least_squares)]publicstringsubPixel_F{get;set;}true;//是否亚像素//一般不选择//least_squares[Category(查询模板参数),Description(金字塔层数*)]publicintnumLevels_F{get;set;}5;//金字塔层数*[Category(查询模板参数),Description(贪婪度//值越小越容易匹配)]publicdoublegreediness_F{get;set;}0.5;//贪婪度//值越小越容易匹配[Category(查询模板参数),Description()]publicdoublerow{get;set;}0;[Category(查询模板参数),Description()]publicdoublecolumn{get;set;}0;[Category(查询模板参数),Description()]publicdoubleangle{get;set;}0;[Category(查询模板参数),Description()]publicdoublescale{get;set;}0;[Category(查询模板参数),Description()]publicdoublescore{get;set;}0;[Category(拟合直线参数),Description(半长)]publicdoubleLength1{get;set;}15;[Category(拟合直线参数),Description(半宽)]publicdoubleLength2{get;set;}5;[Category(拟合直线参数),Description(过度阈值)]publicdoubleThreshold{get;set;}10;[Category(拟合直线参数),Description(间隔)]publicdoubleMeasureDistance{get;set;}12;[Category(拟合直线参数),Description(由黑到白还是由白到黑还是都可以)]publicstringTransition{get;set;}all;[Category(拟合直线参数),Description(第几个点)]publicstringSelect{get;set;}first;}