C3031
2026-01-30 065674f3eea53cd84244dbb7ba1a994f86dde1ab
已修改8个文件
已添加4个文件
2403 ■■■■ 文件已修改
LB_SmartVision/VisionForm.Designer.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Alogrithms/Halcon/2D/HBlobTool/HBlobToolEdit.Designer.cs 603 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Alogrithms/Halcon/2D/HBlobTool/HBlobToolEdit.resx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Alogrithms/Halcon/2D/HFindCode2dTool/HFindCode2dToolEdit.Designer.cs 262 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Alogrithms/Halcon/2D/HFindCode2dTool/HFindCode2dToolEdit.resx 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Alogrithms/Halcon/2D/HFindLineTool/HFindLineToolEdit.Designer.cs 395 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Alogrithms/Halcon/2D/HFindLineTool/HFindLineToolEdit.resx 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementTool.cs 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.Designer.cs 683 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.resx 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LB_SmartVision/VisionForm.Designer.cs
@@ -89,7 +89,7 @@
            // 
            sc_VisionForm.Panel2.Controls.Add(grb_Info);
            sc_VisionForm.Size = new Size(1416, 781);
            sc_VisionForm.SplitterDistance = 593;
            sc_VisionForm.SplitterDistance = 592;
            sc_VisionForm.SplitterWidth = 5;
            sc_VisionForm.TabIndex = 1;
            // 
@@ -108,7 +108,7 @@
            tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Absolute, 60F));
            tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Absolute, 39F));
            tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
            tlp_MainView.Size = new Size(1416, 593);
            tlp_MainView.Size = new Size(1416, 592);
            tlp_MainView.TabIndex = 1;
            tlp_MainView.TagString = null;
            // 
@@ -122,7 +122,7 @@
            materialTabControl.MouseState = MaterialSkin.MouseState.HOVER;
            materialTabControl.Name = "materialTabControl";
            materialTabControl.SelectedIndex = 0;
            materialTabControl.Size = new Size(1412, 490);
            materialTabControl.Size = new Size(1412, 489);
            materialTabControl.TabIndex = 0;
            // 
            // tlp_VisionMainOperator
@@ -249,7 +249,7 @@
            grb_Info.MinimumSize = new Size(1, 1);
            grb_Info.Name = "grb_Info";
            grb_Info.Padding = new Padding(0, 40, 0, 0);
            grb_Info.Size = new Size(1416, 183);
            grb_Info.Size = new Size(1416, 184);
            grb_Info.TabIndex = 1;
            grb_Info.Text = "日志显示区:";
            grb_Info.TextAlignment = ContentAlignment.MiddleLeft;
@@ -265,7 +265,7 @@
            rich_Info.Name = "rich_Info";
            rich_Info.Padding = new Padding(2);
            rich_Info.ShowText = false;
            rich_Info.Size = new Size(1416, 143);
            rich_Info.Size = new Size(1416, 144);
            rich_Info.TabIndex = 0;
            rich_Info.TextAlignment = ContentAlignment.MiddleLeft;
            // 
LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs
@@ -3833,6 +3833,104 @@
        }
        /// <summary>
        /// å›¾åƒå¢žå¼ºç®—法-边缘增强
        /// </summary>
        /// <param name="ho_Image">待测图片</param>
        /// <param name="hv_Wid">掩膜宽</param>
        /// <param name="hv_High">掩膜高</param>
        /// <param name="hv_Fac">增强因子</param>
        /// <param name="hv_Row1">起始纵坐标</param>
        /// <param name="hv_Column1">起始横坐标</param>
        /// <param name="hv_Row2">结束纵坐标</param>
        /// <param name="hv_Column2">结束横坐标</param>
        public static void Emphsize(HObject ho_Image, out HObject ho_OutImage, HTuple hv_ImageEnhancementType, HTuple hv_Wid, HTuple hv_High, HTuple hv_Fac)
        {
            HOperatorSet.GenEmptyObj(out ho_OutImage);
            try
            {
                HTuple hv_ImageEnhancementTypeOut = new HTuple();
                hv_ImageEnhancementTypeOut.Dispose();
                hv_ImageEnhancementTypeOut = new HTuple(hv_ImageEnhancementType);
                hv_Wid.Dispose();
                hv_High.Dispose();
                ho_OutImage.Dispose();
                //设置图像增强算法
                if ((int)(new HTuple(hv_ImageEnhancementTypeOut.TupleEqual("emphasize"))) != 0)
                {
                    hv_ImageEnhancementTypeOut.Dispose();
                    hv_ImageEnhancementTypeOut = "emphasize";
                    HOperatorSet.Emphasize(ho_Image, out ho_OutImage, hv_Wid, hv_High, hv_Fac);
                }
                else if ((int)(new HTuple(hv_ImageEnhancementTypeOut.TupleEqual("equHisto"))) != 0)
                {
                    hv_ImageEnhancementTypeOut.Dispose();
                    hv_ImageEnhancementTypeOut = "equHisto";
                }
                else
                {
                    hv_ImageEnhancementTypeOut.Dispose();
                    hv_ImageEnhancementTypeOut = "scaleMax";
                }
                HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage);
                return;
            }
            catch (HalconException HDevExpDefaultException)
            {
                hv_Wid.Dispose();
                hv_High.Dispose();
                throw HDevExpDefaultException;
            }
        }
        /// <summary>
        /// å›¾åƒå¢žå¼ºç®—法-比例增强
        /// </summary>
        /// <param name="ho_Image">待测图片</param>
        /// <param name="hv_Wid">掩膜宽</param>
        public static void ScaleImageMax(HObject ho_Image, out HObject ho_OutImage)
        {
            HOperatorSet.GenEmptyObj(out ho_OutImage);
            try
            {
                ho_OutImage.Dispose();
                HOperatorSet.ScaleImageMax(ho_Image, out ho_OutImage);
                return;
            }
            catch (HalconException HDevExpDefaultException)
            {
                throw HDevExpDefaultException;
            }
        }
        /// <summary>
        /// å›¾åƒå¢žå¼ºç®—法-直方图均衡化
        /// </summary>
        /// <param name="ho_Image">待测图片</param>
        /// <param name="hv_Wid">掩膜宽</param>
        public static void EquHistoImage(HObject ho_Image, out HObject ho_OutImage)
        {
            HOperatorSet.GenEmptyObj(out ho_OutImage);
            try
            {
                ho_OutImage.Dispose();
                HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage);
                return;
            }
            catch (HalconException HDevExpDefaultException)
            {
                throw HDevExpDefaultException;
            }
        }
        /// <summary>
        /// å¡å°ºç®—法
        /// </summary>
        /// <param name="ho_Image">待测图片</param>
LB_VisionProcesses/Alogrithms/Halcon/2D/HBlobTool/HBlobToolEdit.Designer.cs
@@ -155,9 +155,9 @@
            // tablePanelParas
            // 
            tablePanelParas.ColumnCount = 4;
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 90F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 116F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 90F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 116F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
            tablePanelParas.Controls.Add(dtxtMaxDistDeviation, 3, 7);
            tablePanelParas.Controls.Add(dtxtMinDistDeviation, 1, 7);
@@ -204,8 +204,8 @@
            tablePanelParas.Controls.Add(label32, 2, 7);
            tablePanelParas.Controls.Add(dtxtMinContlength, 1, 4);
            tablePanelParas.Dock = DockStyle.Fill;
            tablePanelParas.Location = new Point(3, 3);
            tablePanelParas.Margin = new Padding(2, 3, 2, 3);
            tablePanelParas.Location = new Point(4, 4);
            tablePanelParas.Margin = new Padding(3, 4, 3, 4);
            tablePanelParas.Name = "tablePanelParas";
            tablePanelParas.RowCount = 12;
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Percent, 8.333333F));
@@ -220,284 +220,286 @@
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Percent, 8.333333F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Percent, 8.333333F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Percent, 8.333333F));
            tablePanelParas.Size = new Size(386, 516);
            tablePanelParas.Size = new Size(498, 611);
            tablePanelParas.TabIndex = 0;
            // 
            // dtxtMaxDistDeviation
            // 
            dtxtMaxDistDeviation.Location = new Point(286, 297);
            dtxtMaxDistDeviation.Location = new Point(369, 354);
            dtxtMaxDistDeviation.Margin = new Padding(4);
            dtxtMaxDistDeviation.Name = "dtxtMaxDistDeviation";
            dtxtMaxDistDeviation.Size = new Size(97, 23);
            dtxtMaxDistDeviation.Size = new Size(124, 27);
            dtxtMaxDistDeviation.TabIndex = 36;
            dtxtMaxDistDeviation.Text = "0";
            // 
            // dtxtMinDistDeviation
            // 
            dtxtMinDistDeviation.Location = new Point(93, 297);
            dtxtMinDistDeviation.Location = new Point(120, 354);
            dtxtMinDistDeviation.Margin = new Padding(4);
            dtxtMinDistDeviation.Name = "dtxtMinDistDeviation";
            dtxtMinDistDeviation.Size = new Size(97, 23);
            dtxtMinDistDeviation.Size = new Size(124, 27);
            dtxtMinDistDeviation.TabIndex = 35;
            dtxtMinDistDeviation.Text = "0";
            // 
            // dtxtMaxDistMean
            // 
            dtxtMaxDistMean.Location = new Point(286, 255);
            dtxtMaxDistMean.Location = new Point(369, 304);
            dtxtMaxDistMean.Margin = new Padding(4);
            dtxtMaxDistMean.Name = "dtxtMaxDistMean";
            dtxtMaxDistMean.Size = new Size(97, 23);
            dtxtMaxDistMean.Size = new Size(124, 27);
            dtxtMaxDistMean.TabIndex = 34;
            dtxtMaxDistMean.Text = "0";
            // 
            // dtxtMinDistMean
            // 
            dtxtMinDistMean.Location = new Point(93, 255);
            dtxtMinDistMean.Location = new Point(120, 304);
            dtxtMinDistMean.Margin = new Padding(4);
            dtxtMinDistMean.Name = "dtxtMinDistMean";
            dtxtMinDistMean.Size = new Size(97, 23);
            dtxtMinDistMean.Size = new Size(124, 27);
            dtxtMinDistMean.TabIndex = 33;
            dtxtMinDistMean.Text = "0";
            // 
            // dtxtMaxAnisometry
            // 
            dtxtMaxAnisometry.Location = new Point(286, 213);
            dtxtMaxAnisometry.Location = new Point(369, 254);
            dtxtMaxAnisometry.Margin = new Padding(4);
            dtxtMaxAnisometry.Name = "dtxtMaxAnisometry";
            dtxtMaxAnisometry.Size = new Size(97, 23);
            dtxtMaxAnisometry.Size = new Size(124, 27);
            dtxtMaxAnisometry.TabIndex = 32;
            dtxtMaxAnisometry.Text = "0";
            // 
            // dtxtMinAnisometry
            // 
            dtxtMinAnisometry.Location = new Point(93, 213);
            dtxtMinAnisometry.Location = new Point(120, 254);
            dtxtMinAnisometry.Margin = new Padding(4);
            dtxtMinAnisometry.Name = "dtxtMinAnisometry";
            dtxtMinAnisometry.Size = new Size(97, 23);
            dtxtMinAnisometry.Size = new Size(124, 27);
            dtxtMinAnisometry.TabIndex = 31;
            dtxtMinAnisometry.Text = "0";
            // 
            // dtxtMaxContlength
            // 
            dtxtMaxContlength.Location = new Point(286, 171);
            dtxtMaxContlength.Location = new Point(369, 204);
            dtxtMaxContlength.Margin = new Padding(4);
            dtxtMaxContlength.Name = "dtxtMaxContlength";
            dtxtMaxContlength.Size = new Size(97, 23);
            dtxtMaxContlength.Size = new Size(124, 27);
            dtxtMaxContlength.TabIndex = 30;
            dtxtMaxContlength.Text = "0";
            // 
            // label1
            // 
            label1.AutoSize = true;
            label1.Location = new Point(2, 0);
            label1.Margin = new Padding(2, 0, 2, 0);
            label1.MaximumSize = new Size(0, 28);
            label1.MinimumSize = new Size(0, 28);
            label1.Location = new Point(3, 0);
            label1.MaximumSize = new Size(0, 33);
            label1.MinimumSize = new Size(0, 33);
            label1.Name = "label1";
            label1.Size = new Size(68, 28);
            label1.Size = new Size(84, 33);
            label1.TabIndex = 0;
            label1.Text = "最小灰度值";
            label1.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtMinThreshold
            // 
            dtxtMinThreshold.Location = new Point(92, 3);
            dtxtMinThreshold.Margin = new Padding(2, 3, 2, 3);
            dtxtMinThreshold.Location = new Point(119, 4);
            dtxtMinThreshold.Margin = new Padding(3, 4, 3, 4);
            dtxtMinThreshold.Name = "dtxtMinThreshold";
            dtxtMinThreshold.Size = new Size(99, 23);
            dtxtMinThreshold.Size = new Size(126, 27);
            dtxtMinThreshold.TabIndex = 5;
            dtxtMinThreshold.Text = "0";
            // 
            // label2
            // 
            label2.AutoSize = true;
            label2.Location = new Point(195, 0);
            label2.Margin = new Padding(2, 0, 2, 0);
            label2.MaximumSize = new Size(0, 28);
            label2.MinimumSize = new Size(0, 28);
            label2.Location = new Point(252, 0);
            label2.MaximumSize = new Size(0, 33);
            label2.MinimumSize = new Size(0, 33);
            label2.Name = "label2";
            label2.Size = new Size(68, 28);
            label2.Size = new Size(84, 33);
            label2.TabIndex = 1;
            label2.Text = "最大灰度值";
            label2.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtMaxThreshold
            // 
            dtxtMaxThreshold.Location = new Point(285, 3);
            dtxtMaxThreshold.Margin = new Padding(2, 3, 2, 3);
            dtxtMaxThreshold.Location = new Point(368, 4);
            dtxtMaxThreshold.Margin = new Padding(3, 4, 3, 4);
            dtxtMaxThreshold.Name = "dtxtMaxThreshold";
            dtxtMaxThreshold.Size = new Size(98, 23);
            dtxtMaxThreshold.Size = new Size(125, 27);
            dtxtMaxThreshold.TabIndex = 6;
            dtxtMaxThreshold.Text = "255";
            // 
            // label3
            // 
            label3.AutoSize = true;
            label3.Location = new Point(2, 42);
            label3.Margin = new Padding(2, 0, 2, 0);
            label3.MaximumSize = new Size(0, 28);
            label3.MinimumSize = new Size(0, 28);
            label3.Location = new Point(3, 50);
            label3.MaximumSize = new Size(0, 33);
            label3.MinimumSize = new Size(0, 33);
            label3.Name = "label3";
            label3.Size = new Size(56, 28);
            label3.Size = new Size(69, 33);
            label3.TabIndex = 2;
            label3.Text = "最小面积";
            label3.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtMinArea
            // 
            dtxtMinArea.Location = new Point(92, 45);
            dtxtMinArea.Margin = new Padding(2, 3, 2, 3);
            dtxtMinArea.Location = new Point(119, 54);
            dtxtMinArea.Margin = new Padding(3, 4, 3, 4);
            dtxtMinArea.Name = "dtxtMinArea";
            dtxtMinArea.Size = new Size(99, 23);
            dtxtMinArea.Size = new Size(126, 27);
            dtxtMinArea.TabIndex = 7;
            dtxtMinArea.Text = "0";
            // 
            // label4
            // 
            label4.AutoSize = true;
            label4.Location = new Point(195, 42);
            label4.Margin = new Padding(2, 0, 2, 0);
            label4.MaximumSize = new Size(0, 28);
            label4.MinimumSize = new Size(0, 28);
            label4.Location = new Point(252, 50);
            label4.MaximumSize = new Size(0, 33);
            label4.MinimumSize = new Size(0, 33);
            label4.Name = "label4";
            label4.Size = new Size(56, 28);
            label4.Size = new Size(69, 33);
            label4.TabIndex = 3;
            label4.Text = "最大面积";
            label4.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtMaxArea
            // 
            dtxtMaxArea.Location = new Point(285, 45);
            dtxtMaxArea.Margin = new Padding(2, 3, 2, 3);
            dtxtMaxArea.Location = new Point(368, 54);
            dtxtMaxArea.Margin = new Padding(3, 4, 3, 4);
            dtxtMaxArea.Name = "dtxtMaxArea";
            dtxtMaxArea.Size = new Size(98, 23);
            dtxtMaxArea.Size = new Size(125, 27);
            dtxtMaxArea.TabIndex = 8;
            dtxtMaxArea.Text = "0";
            // 
            // label10
            // 
            label10.AutoSize = true;
            label10.Location = new Point(2, 84);
            label10.Margin = new Padding(2, 0, 2, 0);
            label10.MaximumSize = new Size(0, 28);
            label10.MinimumSize = new Size(0, 28);
            label10.Location = new Point(3, 100);
            label10.MaximumSize = new Size(0, 33);
            label10.MinimumSize = new Size(0, 33);
            label10.Name = "label10";
            label10.Size = new Size(75, 28);
            label10.Size = new Size(93, 33);
            label10.TabIndex = 9;
            label10.Text = "最小纵坐标Y";
            label10.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtMinRow
            // 
            dtxtMinRow.Location = new Point(92, 87);
            dtxtMinRow.Margin = new Padding(2, 3, 2, 3);
            dtxtMinRow.Location = new Point(119, 104);
            dtxtMinRow.Margin = new Padding(3, 4, 3, 4);
            dtxtMinRow.Name = "dtxtMinRow";
            dtxtMinRow.Size = new Size(99, 23);
            dtxtMinRow.Size = new Size(126, 27);
            dtxtMinRow.TabIndex = 9;
            dtxtMinRow.Text = "0";
            // 
            // label11
            // 
            label11.AutoSize = true;
            label11.Location = new Point(195, 84);
            label11.Margin = new Padding(2, 0, 2, 0);
            label11.MaximumSize = new Size(0, 28);
            label11.MinimumSize = new Size(0, 28);
            label11.Location = new Point(252, 100);
            label11.MaximumSize = new Size(0, 33);
            label11.MinimumSize = new Size(0, 33);
            label11.Name = "label11";
            label11.Size = new Size(75, 28);
            label11.Size = new Size(93, 33);
            label11.TabIndex = 10;
            label11.Text = "最大纵坐标Y";
            label11.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtMaxRow
            // 
            dtxtMaxRow.Location = new Point(285, 87);
            dtxtMaxRow.Margin = new Padding(2, 3, 2, 3);
            dtxtMaxRow.Location = new Point(368, 104);
            dtxtMaxRow.Margin = new Padding(3, 4, 3, 4);
            dtxtMaxRow.Name = "dtxtMaxRow";
            dtxtMaxRow.Size = new Size(98, 23);
            dtxtMaxRow.Size = new Size(125, 27);
            dtxtMaxRow.TabIndex = 9;
            dtxtMaxRow.Text = "0";
            // 
            // label12
            // 
            label12.AutoSize = true;
            label12.Location = new Point(2, 126);
            label12.Margin = new Padding(2, 0, 2, 0);
            label12.MaximumSize = new Size(0, 28);
            label12.MinimumSize = new Size(0, 28);
            label12.Location = new Point(3, 150);
            label12.MaximumSize = new Size(0, 33);
            label12.MinimumSize = new Size(0, 33);
            label12.Name = "label12";
            label12.Size = new Size(76, 28);
            label12.Size = new Size(94, 33);
            label12.TabIndex = 11;
            label12.Text = "最小横坐标X";
            label12.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtMinColumn
            // 
            dtxtMinColumn.Location = new Point(92, 129);
            dtxtMinColumn.Margin = new Padding(2, 3, 2, 3);
            dtxtMinColumn.Location = new Point(119, 154);
            dtxtMinColumn.Margin = new Padding(3, 4, 3, 4);
            dtxtMinColumn.Name = "dtxtMinColumn";
            dtxtMinColumn.Size = new Size(99, 23);
            dtxtMinColumn.Size = new Size(126, 27);
            dtxtMinColumn.TabIndex = 9;
            dtxtMinColumn.Text = "0";
            // 
            // label13
            // 
            label13.AutoSize = true;
            label13.Location = new Point(195, 126);
            label13.Margin = new Padding(2, 0, 2, 0);
            label13.MaximumSize = new Size(0, 28);
            label13.MinimumSize = new Size(0, 28);
            label13.Location = new Point(252, 150);
            label13.MaximumSize = new Size(0, 33);
            label13.MinimumSize = new Size(0, 33);
            label13.Name = "label13";
            label13.Size = new Size(76, 28);
            label13.Size = new Size(94, 33);
            label13.TabIndex = 12;
            label13.Text = "最大横坐标X";
            label13.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtMaxColumn
            // 
            dtxtMaxColumn.Location = new Point(285, 129);
            dtxtMaxColumn.Margin = new Padding(2, 3, 2, 3);
            dtxtMaxColumn.Location = new Point(368, 154);
            dtxtMaxColumn.Margin = new Padding(3, 4, 3, 4);
            dtxtMaxColumn.Name = "dtxtMaxColumn";
            dtxtMaxColumn.Size = new Size(98, 23);
            dtxtMaxColumn.Size = new Size(125, 27);
            dtxtMaxColumn.TabIndex = 9;
            dtxtMaxColumn.Text = "0";
            // 
            // label19
            // 
            label19.AutoSize = true;
            label19.Location = new Point(3, 462);
            label19.Location = new Point(4, 550);
            label19.Margin = new Padding(4, 0, 4, 0);
            label19.Name = "label19";
            label19.Size = new Size(56, 17);
            label19.Size = new Size(69, 20);
            label19.TabIndex = 19;
            label19.Text = "最小数量";
            // 
            // dtxtMinCount
            // 
            dtxtMinCount.Location = new Point(93, 465);
            dtxtMinCount.Location = new Point(120, 554);
            dtxtMinCount.Margin = new Padding(4);
            dtxtMinCount.Name = "dtxtMinCount";
            dtxtMinCount.Size = new Size(97, 23);
            dtxtMinCount.Size = new Size(124, 27);
            dtxtMinCount.TabIndex = 17;
            dtxtMinCount.Text = "0";
            // 
            // label20
            // 
            label20.AutoSize = true;
            label20.Location = new Point(196, 462);
            label20.Location = new Point(253, 550);
            label20.Margin = new Padding(4, 0, 4, 0);
            label20.Name = "label20";
            label20.Size = new Size(56, 17);
            label20.Size = new Size(69, 20);
            label20.TabIndex = 20;
            label20.Text = "最大数量";
            // 
            // dtxtMaxCount
            // 
            dtxtMaxCount.Location = new Point(286, 465);
            dtxtMaxCount.Location = new Point(369, 554);
            dtxtMaxCount.Margin = new Padding(4);
            dtxtMaxCount.Name = "dtxtMaxCount";
            dtxtMaxCount.Size = new Size(97, 23);
            dtxtMaxCount.Size = new Size(124, 27);
            dtxtMaxCount.TabIndex = 18;
            dtxtMaxCount.Text = "9999";
            // 
            // label16
            // 
            label16.AutoSize = true;
            label16.Location = new Point(2, 378);
            label16.Margin = new Padding(2, 0, 2, 0);
            label16.MaximumSize = new Size(0, 28);
            label16.MinimumSize = new Size(0, 28);
            label16.Location = new Point(3, 450);
            label16.MaximumSize = new Size(0, 33);
            label16.MinimumSize = new Size(0, 33);
            label16.Name = "label16";
            label16.Size = new Size(68, 28);
            label16.Size = new Size(84, 33);
            label16.TabIndex = 15;
            label16.Text = "最小矩形度";
            label16.TextAlign = ContentAlignment.MiddleCenter;
@@ -505,173 +507,180 @@
            // label14
            // 
            label14.AutoSize = true;
            label14.Location = new Point(2, 336);
            label14.Margin = new Padding(2, 0, 2, 0);
            label14.MaximumSize = new Size(0, 28);
            label14.MinimumSize = new Size(0, 28);
            label14.Location = new Point(3, 400);
            label14.MaximumSize = new Size(0, 33);
            label14.MinimumSize = new Size(0, 33);
            label14.Name = "label14";
            label14.Size = new Size(56, 28);
            label14.Size = new Size(69, 33);
            label14.TabIndex = 13;
            label14.Text = "最小圆度";
            label14.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtMinRectangularity
            // 
            dtxtMinRectangularity.Location = new Point(92, 381);
            dtxtMinRectangularity.Margin = new Padding(2, 3, 2, 3);
            dtxtMinRectangularity.Location = new Point(119, 454);
            dtxtMinRectangularity.Margin = new Padding(3, 4, 3, 4);
            dtxtMinRectangularity.Name = "dtxtMinRectangularity";
            dtxtMinRectangularity.Size = new Size(98, 23);
            dtxtMinRectangularity.Size = new Size(125, 27);
            dtxtMinRectangularity.TabIndex = 9;
            dtxtMinRectangularity.Text = "0";
            // 
            // dtxtMinCircularity
            // 
            dtxtMinCircularity.Location = new Point(92, 339);
            dtxtMinCircularity.Margin = new Padding(2, 3, 2, 3);
            dtxtMinCircularity.Location = new Point(119, 404);
            dtxtMinCircularity.Margin = new Padding(3, 4, 3, 4);
            dtxtMinCircularity.Name = "dtxtMinCircularity";
            dtxtMinCircularity.Size = new Size(98, 23);
            dtxtMinCircularity.Size = new Size(125, 27);
            dtxtMinCircularity.TabIndex = 9;
            dtxtMinCircularity.Text = "0";
            // 
            // label17
            // 
            label17.AutoSize = true;
            label17.Location = new Point(195, 378);
            label17.Margin = new Padding(2, 0, 2, 0);
            label17.MaximumSize = new Size(0, 28);
            label17.MinimumSize = new Size(0, 28);
            label17.Location = new Point(252, 450);
            label17.MaximumSize = new Size(0, 33);
            label17.MinimumSize = new Size(0, 33);
            label17.Name = "label17";
            label17.Size = new Size(68, 28);
            label17.Size = new Size(84, 33);
            label17.TabIndex = 16;
            label17.Text = "最大矩形度";
            label17.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtMaxRectangularity
            // 
            dtxtMaxRectangularity.Location = new Point(285, 381);
            dtxtMaxRectangularity.Margin = new Padding(2, 3, 2, 3);
            dtxtMaxRectangularity.Location = new Point(368, 454);
            dtxtMaxRectangularity.Margin = new Padding(3, 4, 3, 4);
            dtxtMaxRectangularity.Name = "dtxtMaxRectangularity";
            dtxtMaxRectangularity.Size = new Size(98, 23);
            dtxtMaxRectangularity.Size = new Size(125, 27);
            dtxtMaxRectangularity.TabIndex = 10;
            dtxtMaxRectangularity.Text = "1";
            // 
            // label15
            // 
            label15.AutoSize = true;
            label15.Location = new Point(195, 336);
            label15.Margin = new Padding(2, 0, 2, 0);
            label15.MaximumSize = new Size(0, 28);
            label15.MinimumSize = new Size(0, 28);
            label15.Location = new Point(252, 400);
            label15.MaximumSize = new Size(0, 33);
            label15.MinimumSize = new Size(0, 33);
            label15.Name = "label15";
            label15.Size = new Size(56, 28);
            label15.Size = new Size(69, 33);
            label15.TabIndex = 14;
            label15.Text = "最大圆度";
            label15.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtMaxCircularity
            // 
            dtxtMaxCircularity.Location = new Point(285, 339);
            dtxtMaxCircularity.Margin = new Padding(2, 3, 2, 3);
            dtxtMaxCircularity.Location = new Point(368, 404);
            dtxtMaxCircularity.Margin = new Padding(3, 4, 3, 4);
            dtxtMaxCircularity.Name = "dtxtMaxCircularity";
            dtxtMaxCircularity.Size = new Size(98, 23);
            dtxtMaxCircularity.Size = new Size(125, 27);
            dtxtMaxCircularity.TabIndex = 9;
            dtxtMaxCircularity.Text = "1";
            // 
            // label25
            // 
            label25.AutoSize = true;
            label25.Location = new Point(3, 168);
            label25.Location = new Point(4, 200);
            label25.Margin = new Padding(4, 0, 4, 0);
            label25.Name = "label25";
            label25.Size = new Size(56, 17);
            label25.Size = new Size(69, 20);
            label25.TabIndex = 21;
            label25.Text = "最小周长";
            // 
            // label26
            // 
            label26.AutoSize = true;
            label26.Location = new Point(3, 210);
            label26.Location = new Point(4, 250);
            label26.Margin = new Padding(4, 0, 4, 0);
            label26.Name = "label26";
            label26.Size = new Size(68, 17);
            label26.Size = new Size(84, 20);
            label26.TabIndex = 22;
            label26.Text = "最小宽高比";
            // 
            // label27
            // 
            label27.AutoSize = true;
            label27.Location = new Point(3, 252);
            label27.Location = new Point(4, 300);
            label27.Margin = new Padding(4, 0, 4, 0);
            label27.Name = "label27";
            label27.Size = new Size(80, 17);
            label27.Size = new Size(99, 20);
            label27.TabIndex = 23;
            label27.Text = "边距最小平均";
            // 
            // label28
            // 
            label28.AutoSize = true;
            label28.Location = new Point(3, 294);
            label28.Location = new Point(4, 350);
            label28.Margin = new Padding(4, 0, 4, 0);
            label28.Name = "label28";
            label28.Size = new Size(80, 17);
            label28.Size = new Size(99, 20);
            label28.TabIndex = 24;
            label28.Text = "边距最小方差";
            // 
            // label29
            // 
            label29.AutoSize = true;
            label29.Location = new Point(196, 168);
            label29.Location = new Point(253, 200);
            label29.Margin = new Padding(4, 0, 4, 0);
            label29.Name = "label29";
            label29.Size = new Size(56, 17);
            label29.Size = new Size(69, 20);
            label29.TabIndex = 25;
            label29.Text = "最大周长";
            // 
            // label30
            // 
            label30.AutoSize = true;
            label30.Location = new Point(196, 210);
            label30.Location = new Point(253, 250);
            label30.Margin = new Padding(4, 0, 4, 0);
            label30.Name = "label30";
            label30.Size = new Size(68, 17);
            label30.Size = new Size(84, 20);
            label30.TabIndex = 26;
            label30.Text = "最大宽高比";
            // 
            // label31
            // 
            label31.AutoSize = true;
            label31.Location = new Point(196, 252);
            label31.Location = new Point(253, 300);
            label31.Margin = new Padding(4, 0, 4, 0);
            label31.Name = "label31";
            label31.Size = new Size(80, 17);
            label31.Size = new Size(99, 20);
            label31.TabIndex = 27;
            label31.Text = "边距最大平均";
            // 
            // label32
            // 
            label32.AutoSize = true;
            label32.Location = new Point(196, 294);
            label32.Location = new Point(253, 350);
            label32.Margin = new Padding(4, 0, 4, 0);
            label32.Name = "label32";
            label32.Size = new Size(80, 17);
            label32.Size = new Size(99, 20);
            label32.TabIndex = 28;
            label32.Text = "边距最大方差";
            // 
            // dtxtMinContlength
            // 
            dtxtMinContlength.Location = new Point(93, 171);
            dtxtMinContlength.Location = new Point(120, 204);
            dtxtMinContlength.Margin = new Padding(4);
            dtxtMinContlength.Name = "dtxtMinContlength";
            dtxtMinContlength.Size = new Size(97, 23);
            dtxtMinContlength.Size = new Size(124, 27);
            dtxtMinContlength.TabIndex = 29;
            dtxtMinContlength.Text = "0";
            // 
            // pnlInputImage
            // 
            pnlInputImage.Dock = DockStyle.Fill;
            pnlInputImage.Location = new Point(3, 3);
            pnlInputImage.Margin = new Padding(4);
            pnlInputImage.Location = new Point(4, 4);
            pnlInputImage.Margin = new Padding(5);
            pnlInputImage.Name = "pnlInputImage";
            pnlInputImage.Size = new Size(626, 516);
            pnlInputImage.Size = new Size(807, 611);
            pnlInputImage.TabIndex = 44;
            // 
            // TopToolStrip
            // 
            TopToolStrip.ImageScalingSize = new Size(20, 20);
            TopToolStrip.Items.AddRange(new ToolStripItem[] { btnRun, btnLoadImage, btnSaveParas, btnLoadParas });
            TopToolStrip.Location = new Point(0, 0);
            TopToolStrip.Name = "TopToolStrip";
            TopToolStrip.Size = new Size(1044, 25);
            TopToolStrip.Size = new Size(1342, 27);
            TopToolStrip.TabIndex = 45;
            TopToolStrip.Text = "toolStrip1";
            // 
@@ -680,7 +689,7 @@
            btnRun.BackgroundImageLayout = ImageLayout.Zoom;
            btnRun.ImageTransparentColor = Color.Magenta;
            btnRun.Name = "btnRun";
            btnRun.Size = new Size(36, 22);
            btnRun.Size = new Size(43, 24);
            btnRun.Text = "运行";
            btnRun.Click += btnRun_Click;
            // 
@@ -688,7 +697,7 @@
            // 
            btnLoadImage.ImageTransparentColor = Color.Magenta;
            btnLoadImage.Name = "btnLoadImage";
            btnLoadImage.Size = new Size(36, 22);
            btnLoadImage.Size = new Size(43, 24);
            btnLoadImage.Text = "导图";
            btnLoadImage.Click += btnLoadImage_Click;
            // 
@@ -696,7 +705,7 @@
            // 
            btnSaveParas.ImageTransparentColor = Color.Magenta;
            btnSaveParas.Name = "btnSaveParas";
            btnSaveParas.Size = new Size(36, 22);
            btnSaveParas.Size = new Size(43, 24);
            btnSaveParas.Text = "保存";
            btnSaveParas.Click += btnSaveParas_Click;
            // 
@@ -704,35 +713,37 @@
            // 
            btnLoadParas.ImageTransparentColor = Color.Magenta;
            btnLoadParas.Name = "btnLoadParas";
            btnLoadParas.Size = new Size(36, 22);
            btnLoadParas.Size = new Size(43, 24);
            btnLoadParas.Text = "加载";
            btnLoadParas.Click += btnLoadParas_Click;
            // 
            // BtmStatusStrip
            // 
            BtmStatusStrip.ImageScalingSize = new Size(20, 20);
            BtmStatusStrip.Items.AddRange(new ToolStripItem[] { lblResult, lblMsg, lblRunTime });
            BtmStatusStrip.Location = new Point(0, 577);
            BtmStatusStrip.Location = new Point(0, 679);
            BtmStatusStrip.Name = "BtmStatusStrip";
            BtmStatusStrip.Size = new Size(1044, 22);
            BtmStatusStrip.Padding = new Padding(1, 0, 18, 0);
            BtmStatusStrip.Size = new Size(1342, 26);
            BtmStatusStrip.TabIndex = 46;
            BtmStatusStrip.Text = "statusStrip1";
            // 
            // lblResult
            // 
            lblResult.Name = "lblResult";
            lblResult.Size = new Size(34, 17);
            lblResult.Size = new Size(42, 20);
            lblResult.Text = "True";
            // 
            // lblMsg
            // 
            lblMsg.Name = "lblMsg";
            lblMsg.Size = new Size(56, 17);
            lblMsg.Size = new Size(69, 20);
            lblMsg.Text = "运行成功";
            // 
            // lblRunTime
            // 
            lblRunTime.Name = "lblRunTime";
            lblRunTime.Size = new Size(32, 17);
            lblRunTime.Size = new Size(39, 20);
            lblRunTime.Text = "0ms";
            // 
            // parasTabControl
@@ -742,18 +753,20 @@
            parasTabControl.Controls.Add(tabPage2);
            parasTabControl.Dock = DockStyle.Fill;
            parasTabControl.Location = new Point(0, 0);
            parasTabControl.Margin = new Padding(4);
            parasTabControl.Name = "parasTabControl";
            parasTabControl.SelectedIndex = 0;
            parasTabControl.Size = new Size(400, 552);
            parasTabControl.Size = new Size(514, 652);
            parasTabControl.TabIndex = 48;
            // 
            // tabPage1
            // 
            tabPage1.Controls.Add(tablePanelParas);
            tabPage1.Location = new Point(4, 26);
            tabPage1.Location = new Point(4, 29);
            tabPage1.Margin = new Padding(4);
            tabPage1.Name = "tabPage1";
            tabPage1.Padding = new Padding(3);
            tabPage1.Size = new Size(392, 522);
            tabPage1.Padding = new Padding(4);
            tabPage1.Size = new Size(506, 619);
            tabPage1.TabIndex = 0;
            tabPage1.Text = "输入参数";
            tabPage1.UseVisualStyleBackColor = true;
@@ -761,9 +774,10 @@
            // tabPage5
            // 
            tabPage5.Controls.Add(tableLayoutPanel2);
            tabPage5.Location = new Point(4, 26);
            tabPage5.Location = new Point(4, 29);
            tabPage5.Margin = new Padding(4);
            tabPage5.Name = "tabPage5";
            tabPage5.Size = new Size(392, 522);
            tabPage5.Size = new Size(506, 619);
            tabPage5.TabIndex = 2;
            tabPage5.Text = "运行参数";
            tabPage5.UseVisualStyleBackColor = true;
@@ -771,9 +785,9 @@
            // tableLayoutPanel2
            // 
            tableLayoutPanel2.ColumnCount = 4;
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 60F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 150F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 40F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 77F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 193F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 51F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
            tableLayoutPanel2.Controls.Add(cmbTypeRoi, 1, 0);
            tableLayoutPanel2.Controls.Add(label21, 0, 0);
@@ -786,21 +800,23 @@
            tableLayoutPanel2.Controls.Add(tableLayoutPanel3, 3, 2);
            tableLayoutPanel2.Dock = DockStyle.Fill;
            tableLayoutPanel2.Location = new Point(0, 0);
            tableLayoutPanel2.Margin = new Padding(4);
            tableLayoutPanel2.Name = "tableLayoutPanel2";
            tableLayoutPanel2.RowCount = 3;
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
            tableLayoutPanel2.Size = new Size(392, 522);
            tableLayoutPanel2.Size = new Size(506, 619);
            tableLayoutPanel2.TabIndex = 4;
            // 
            // cmbTypeRoi
            // 
            cmbTypeRoi.Dock = DockStyle.Fill;
            cmbTypeRoi.FormattingEnabled = true;
            cmbTypeRoi.Location = new Point(63, 3);
            cmbTypeRoi.Location = new Point(81, 4);
            cmbTypeRoi.Margin = new Padding(4);
            cmbTypeRoi.Name = "cmbTypeRoi";
            cmbTypeRoi.Size = new Size(144, 25);
            cmbTypeRoi.Size = new Size(185, 28);
            cmbTypeRoi.TabIndex = 1;
            cmbTypeRoi.SelectedIndexChanged += cmbTypeRoi_SelectedIndexChanged;
            // 
@@ -808,9 +824,10 @@
            // 
            label21.AutoSize = true;
            label21.Dock = DockStyle.Fill;
            label21.Location = new Point(3, 0);
            label21.Location = new Point(4, 0);
            label21.Margin = new Padding(4, 0, 4, 0);
            label21.Name = "label21";
            label21.Size = new Size(54, 30);
            label21.Size = new Size(69, 35);
            label21.TabIndex = 3;
            label21.Text = "ROI";
            label21.TextAlign = ContentAlignment.MiddleCenter;
@@ -819,9 +836,10 @@
            // 
            label22.AutoSize = true;
            label22.Dock = DockStyle.Fill;
            label22.Location = new Point(3, 30);
            label22.Location = new Point(4, 35);
            label22.Margin = new Padding(4, 0, 4, 0);
            label22.Name = "label22";
            label22.Size = new Size(54, 30);
            label22.Size = new Size(69, 35);
            label22.TabIndex = 4;
            label22.Text = "Fixture";
            label22.TextAlign = ContentAlignment.MiddleCenter;
@@ -830,9 +848,10 @@
            // 
            cmbFixture.Dock = DockStyle.Fill;
            cmbFixture.FormattingEnabled = true;
            cmbFixture.Location = new Point(63, 33);
            cmbFixture.Location = new Point(81, 39);
            cmbFixture.Margin = new Padding(4);
            cmbFixture.Name = "cmbFixture";
            cmbFixture.Size = new Size(144, 25);
            cmbFixture.Size = new Size(185, 28);
            cmbFixture.TabIndex = 5;
            cmbFixture.SelectedIndexChanged += cmbFixture_SelectedIndexChanged;
            // 
@@ -840,9 +859,10 @@
            // 
            ckbDrawRoi.AutoSize = true;
            ckbDrawRoi.CheckAlign = ContentAlignment.MiddleCenter;
            ckbDrawRoi.Location = new Point(213, 3);
            ckbDrawRoi.Location = new Point(274, 4);
            ckbDrawRoi.Margin = new Padding(4);
            ckbDrawRoi.Name = "ckbDrawRoi";
            ckbDrawRoi.Size = new Size(15, 14);
            ckbDrawRoi.Size = new Size(18, 17);
            ckbDrawRoi.TabIndex = 2;
            ckbDrawRoi.UseVisualStyleBackColor = true;
            ckbDrawRoi.CheckedChanged += ckbDrawRoi_CheckedChanged;
@@ -851,9 +871,10 @@
            // 
            ckbListAfter.Dock = DockStyle.Fill;
            ckbListAfter.FormattingEnabled = true;
            ckbListAfter.Location = new Point(63, 63);
            ckbListAfter.Location = new Point(81, 74);
            ckbListAfter.Margin = new Padding(4);
            ckbListAfter.Name = "ckbListAfter";
            ckbListAfter.Size = new Size(144, 456);
            ckbListAfter.Size = new Size(185, 541);
            ckbListAfter.TabIndex = 6;
            // 
            // tableLayoutPanel1
@@ -865,23 +886,25 @@
            tableLayoutPanel1.Controls.Add(btnUp, 0, 2);
            tableLayoutPanel1.Controls.Add(btnDown, 0, 3);
            tableLayoutPanel1.Dock = DockStyle.Fill;
            tableLayoutPanel1.Location = new Point(213, 63);
            tableLayoutPanel1.Location = new Point(274, 74);
            tableLayoutPanel1.Margin = new Padding(4);
            tableLayoutPanel1.Name = "tableLayoutPanel1";
            tableLayoutPanel1.RowCount = 5;
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
            tableLayoutPanel1.Size = new Size(34, 456);
            tableLayoutPanel1.Size = new Size(43, 541);
            tableLayoutPanel1.TabIndex = 7;
            // 
            // btnAdd
            // 
            btnAdd.Dock = DockStyle.Fill;
            btnAdd.Location = new Point(3, 3);
            btnAdd.Location = new Point(4, 4);
            btnAdd.Margin = new Padding(4);
            btnAdd.Name = "btnAdd";
            btnAdd.Size = new Size(28, 24);
            btnAdd.Size = new Size(35, 27);
            btnAdd.TabIndex = 0;
            btnAdd.Text = "+";
            btnAdd.UseVisualStyleBackColor = true;
@@ -889,9 +912,10 @@
            // btnDel
            // 
            btnDel.Dock = DockStyle.Fill;
            btnDel.Location = new Point(3, 33);
            btnDel.Location = new Point(4, 39);
            btnDel.Margin = new Padding(4);
            btnDel.Name = "btnDel";
            btnDel.Size = new Size(28, 24);
            btnDel.Size = new Size(35, 27);
            btnDel.TabIndex = 1;
            btnDel.Text = "-";
            btnDel.UseVisualStyleBackColor = true;
@@ -899,9 +923,10 @@
            // btnUp
            // 
            btnUp.Dock = DockStyle.Fill;
            btnUp.Location = new Point(3, 63);
            btnUp.Location = new Point(4, 74);
            btnUp.Margin = new Padding(4);
            btnUp.Name = "btnUp";
            btnUp.Size = new Size(28, 24);
            btnUp.Size = new Size(35, 27);
            btnUp.TabIndex = 2;
            btnUp.Text = "↑";
            btnUp.UseVisualStyleBackColor = true;
@@ -909,9 +934,10 @@
            // btnDown
            // 
            btnDown.Dock = DockStyle.Fill;
            btnDown.Location = new Point(3, 93);
            btnDown.Location = new Point(4, 109);
            btnDown.Margin = new Padding(4);
            btnDown.Name = "btnDown";
            btnDown.Size = new Size(28, 24);
            btnDown.Size = new Size(35, 27);
            btnDown.TabIndex = 3;
            btnDown.Text = "↓";
            btnDown.UseVisualStyleBackColor = true;
@@ -920,9 +946,10 @@
            // 
            label24.AutoSize = true;
            label24.Dock = DockStyle.Fill;
            label24.Location = new Point(3, 60);
            label24.Location = new Point(4, 70);
            label24.Margin = new Padding(4, 0, 4, 0);
            label24.Name = "label24";
            label24.Size = new Size(54, 462);
            label24.Size = new Size(69, 549);
            label24.TabIndex = 8;
            label24.Text = "形态学";
            label24.TextAlign = ContentAlignment.TopCenter;
@@ -930,46 +957,50 @@
            // tableLayoutPanel3
            // 
            tableLayoutPanel3.ColumnCount = 1;
            tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 60F));
            tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 175F));
            tableLayoutPanel3.Controls.Add(cmbProcessType, 0, 1);
            tableLayoutPanel3.Controls.Add(cmbShapeType, 0, 2);
            tableLayoutPanel3.Controls.Add(lblTips, 0, 3);
            tableLayoutPanel3.Controls.Add(tableLayoutPanel4, 0, 0);
            tableLayoutPanel3.Dock = DockStyle.Fill;
            tableLayoutPanel3.Location = new Point(253, 63);
            tableLayoutPanel3.Location = new Point(325, 74);
            tableLayoutPanel3.Margin = new Padding(4);
            tableLayoutPanel3.Name = "tableLayoutPanel3";
            tableLayoutPanel3.RowCount = 4;
            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Absolute, 41F));
            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
            tableLayoutPanel3.Size = new Size(136, 456);
            tableLayoutPanel3.Size = new Size(177, 541);
            tableLayoutPanel3.TabIndex = 9;
            // 
            // cmbProcessType
            // 
            cmbProcessType.Dock = DockStyle.Fill;
            cmbProcessType.FormattingEnabled = true;
            cmbProcessType.Location = new Point(3, 38);
            cmbProcessType.Location = new Point(4, 45);
            cmbProcessType.Margin = new Padding(4);
            cmbProcessType.Name = "cmbProcessType";
            cmbProcessType.Size = new Size(130, 25);
            cmbProcessType.Size = new Size(169, 28);
            cmbProcessType.TabIndex = 3;
            // 
            // cmbShapeType
            // 
            cmbShapeType.Dock = DockStyle.Fill;
            cmbShapeType.FormattingEnabled = true;
            cmbShapeType.Location = new Point(3, 68);
            cmbShapeType.Location = new Point(4, 80);
            cmbShapeType.Margin = new Padding(4);
            cmbShapeType.Name = "cmbShapeType";
            cmbShapeType.Size = new Size(130, 25);
            cmbShapeType.Size = new Size(169, 28);
            cmbShapeType.TabIndex = 5;
            // 
            // lblTips
            // 
            lblTips.AutoSize = true;
            lblTips.Location = new Point(3, 95);
            lblTips.Location = new Point(4, 111);
            lblTips.Margin = new Padding(4, 0, 4, 0);
            lblTips.Name = "lblTips";
            lblTips.Size = new Size(32, 17);
            lblTips.Size = new Size(39, 20);
            lblTips.TabIndex = 6;
            lblTips.Text = "提示";
            // 
@@ -980,38 +1011,42 @@
            tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
            tableLayoutPanel4.Controls.Add(txtAfterProcessWidth, 0, 0);
            tableLayoutPanel4.Controls.Add(txtAfterProcessHeight, 1, 0);
            tableLayoutPanel4.Location = new Point(3, 3);
            tableLayoutPanel4.Location = new Point(4, 4);
            tableLayoutPanel4.Margin = new Padding(4);
            tableLayoutPanel4.Name = "tableLayoutPanel4";
            tableLayoutPanel4.RowCount = 1;
            tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
            tableLayoutPanel4.Size = new Size(130, 29);
            tableLayoutPanel4.Size = new Size(167, 33);
            tableLayoutPanel4.TabIndex = 7;
            // 
            // txtAfterProcessWidth
            // 
            txtAfterProcessWidth.Dock = DockStyle.Fill;
            txtAfterProcessWidth.Location = new Point(3, 3);
            txtAfterProcessWidth.Location = new Point(4, 4);
            txtAfterProcessWidth.Margin = new Padding(4);
            txtAfterProcessWidth.Name = "txtAfterProcessWidth";
            txtAfterProcessWidth.Size = new Size(59, 23);
            txtAfterProcessWidth.Size = new Size(75, 27);
            txtAfterProcessWidth.TabIndex = 4;
            txtAfterProcessWidth.Value = new decimal(new int[] { 3, 0, 0, 0 });
            // 
            // txtAfterProcessHeight
            // 
            txtAfterProcessHeight.Dock = DockStyle.Fill;
            txtAfterProcessHeight.Location = new Point(68, 3);
            txtAfterProcessHeight.Location = new Point(87, 4);
            txtAfterProcessHeight.Margin = new Padding(4);
            txtAfterProcessHeight.Name = "txtAfterProcessHeight";
            txtAfterProcessHeight.Size = new Size(59, 23);
            txtAfterProcessHeight.Size = new Size(76, 27);
            txtAfterProcessHeight.TabIndex = 5;
            txtAfterProcessHeight.Value = new decimal(new int[] { 3, 0, 0, 0 });
            // 
            // tabPage2
            // 
            tabPage2.Controls.Add(tableLayoutResults);
            tabPage2.Location = new Point(4, 26);
            tabPage2.Location = new Point(4, 29);
            tabPage2.Margin = new Padding(4);
            tabPage2.Name = "tabPage2";
            tabPage2.Padding = new Padding(3);
            tabPage2.Size = new Size(392, 522);
            tabPage2.Padding = new Padding(4);
            tabPage2.Size = new Size(506, 619);
            tabPage2.TabIndex = 1;
            tabPage2.Text = "输出结果";
            tabPage2.UseVisualStyleBackColor = true;
@@ -1019,7 +1054,7 @@
            // tableLayoutResults
            // 
            tableLayoutResults.ColumnCount = 2;
            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 100F));
            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 129F));
            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
            tableLayoutResults.Controls.Add(dtxtHeight, 1, 4);
            tableLayoutResults.Controls.Add(label9, 0, 4);
@@ -1036,8 +1071,8 @@
            tableLayoutResults.Controls.Add(label23, 0, 5);
            tableLayoutResults.Controls.Add(dtxtArea, 1, 5);
            tableLayoutResults.Dock = DockStyle.Fill;
            tableLayoutResults.Location = new Point(3, 3);
            tableLayoutResults.Margin = new Padding(2, 3, 2, 3);
            tableLayoutResults.Location = new Point(4, 4);
            tableLayoutResults.Margin = new Padding(3, 4, 3, 4);
            tableLayoutResults.Name = "tableLayoutResults";
            tableLayoutResults.RowCount = 10;
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
@@ -1050,29 +1085,28 @@
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.Size = new Size(386, 516);
            tableLayoutResults.Size = new Size(498, 611);
            tableLayoutResults.TabIndex = 1;
            // 
            // dtxtHeight
            // 
            dtxtHeight.Dock = DockStyle.Fill;
            dtxtHeight.Location = new Point(102, 207);
            dtxtHeight.Margin = new Padding(2, 3, 2, 3);
            dtxtHeight.Location = new Point(132, 248);
            dtxtHeight.Margin = new Padding(3, 4, 3, 4);
            dtxtHeight.Name = "dtxtHeight";
            dtxtHeight.ReadOnly = true;
            dtxtHeight.Size = new Size(282, 23);
            dtxtHeight.Size = new Size(363, 27);
            dtxtHeight.TabIndex = 9;
            // 
            // label9
            // 
            label9.AutoSize = true;
            label9.Dock = DockStyle.Fill;
            label9.Location = new Point(2, 204);
            label9.Margin = new Padding(2, 0, 2, 0);
            label9.MaximumSize = new Size(0, 28);
            label9.MinimumSize = new Size(0, 28);
            label9.Location = new Point(3, 244);
            label9.MaximumSize = new Size(0, 33);
            label9.MinimumSize = new Size(0, 33);
            label9.Name = "label9";
            label9.Size = new Size(96, 28);
            label9.Size = new Size(123, 33);
            label9.TabIndex = 3;
            label9.Text = "高度";
            label9.TextAlign = ContentAlignment.TopCenter;
@@ -1081,12 +1115,11 @@
            // 
            label5.AutoSize = true;
            label5.Dock = DockStyle.Fill;
            label5.Location = new Point(2, 0);
            label5.Margin = new Padding(2, 0, 2, 0);
            label5.MaximumSize = new Size(0, 28);
            label5.MinimumSize = new Size(0, 28);
            label5.Location = new Point(3, 0);
            label5.MaximumSize = new Size(0, 33);
            label5.MinimumSize = new Size(0, 33);
            label5.Name = "label5";
            label5.Size = new Size(96, 28);
            label5.Size = new Size(123, 33);
            label5.TabIndex = 0;
            label5.Text = "X";
            label5.TextAlign = ContentAlignment.TopCenter;
@@ -1095,12 +1128,11 @@
            // 
            label6.AutoSize = true;
            label6.Dock = DockStyle.Fill;
            label6.Location = new Point(2, 51);
            label6.Margin = new Padding(2, 0, 2, 0);
            label6.MaximumSize = new Size(0, 28);
            label6.MinimumSize = new Size(0, 28);
            label6.Location = new Point(3, 61);
            label6.MaximumSize = new Size(0, 33);
            label6.MinimumSize = new Size(0, 33);
            label6.Name = "label6";
            label6.Size = new Size(96, 28);
            label6.Size = new Size(123, 33);
            label6.TabIndex = 1;
            label6.Text = "Y";
            label6.TextAlign = ContentAlignment.TopCenter;
@@ -1109,12 +1141,11 @@
            // 
            label7.AutoSize = true;
            label7.Dock = DockStyle.Fill;
            label7.Location = new Point(2, 102);
            label7.Margin = new Padding(2, 0, 2, 0);
            label7.MaximumSize = new Size(0, 28);
            label7.MinimumSize = new Size(0, 28);
            label7.Location = new Point(3, 122);
            label7.MaximumSize = new Size(0, 33);
            label7.MinimumSize = new Size(0, 33);
            label7.Name = "label7";
            label7.Size = new Size(96, 28);
            label7.Size = new Size(123, 33);
            label7.TabIndex = 2;
            label7.Text = "弧度(rad)";
            label7.TextAlign = ContentAlignment.TopCenter;
@@ -1123,12 +1154,11 @@
            // 
            label8.AutoSize = true;
            label8.Dock = DockStyle.Fill;
            label8.Location = new Point(2, 153);
            label8.Margin = new Padding(2, 0, 2, 0);
            label8.MaximumSize = new Size(0, 28);
            label8.MinimumSize = new Size(0, 28);
            label8.Location = new Point(3, 183);
            label8.MaximumSize = new Size(0, 33);
            label8.MinimumSize = new Size(0, 33);
            label8.Name = "label8";
            label8.Size = new Size(96, 28);
            label8.Size = new Size(123, 33);
            label8.TabIndex = 3;
            label8.Text = "宽度";
            label8.TextAlign = ContentAlignment.TopCenter;
@@ -1136,50 +1166,51 @@
            // dtxtCenterX
            // 
            dtxtCenterX.Dock = DockStyle.Fill;
            dtxtCenterX.Location = new Point(102, 3);
            dtxtCenterX.Margin = new Padding(2, 3, 2, 3);
            dtxtCenterX.Location = new Point(132, 4);
            dtxtCenterX.Margin = new Padding(3, 4, 3, 4);
            dtxtCenterX.Name = "dtxtCenterX";
            dtxtCenterX.ReadOnly = true;
            dtxtCenterX.Size = new Size(282, 23);
            dtxtCenterX.Size = new Size(363, 27);
            dtxtCenterX.TabIndex = 5;
            // 
            // dtxtCenterY
            // 
            dtxtCenterY.Dock = DockStyle.Fill;
            dtxtCenterY.Location = new Point(102, 54);
            dtxtCenterY.Margin = new Padding(2, 3, 2, 3);
            dtxtCenterY.Location = new Point(132, 65);
            dtxtCenterY.Margin = new Padding(3, 4, 3, 4);
            dtxtCenterY.Name = "dtxtCenterY";
            dtxtCenterY.ReadOnly = true;
            dtxtCenterY.Size = new Size(282, 23);
            dtxtCenterY.Size = new Size(363, 27);
            dtxtCenterY.TabIndex = 6;
            // 
            // dtxtPhi
            // 
            dtxtPhi.Dock = DockStyle.Fill;
            dtxtPhi.Location = new Point(102, 105);
            dtxtPhi.Margin = new Padding(2, 3, 2, 3);
            dtxtPhi.Location = new Point(132, 126);
            dtxtPhi.Margin = new Padding(3, 4, 3, 4);
            dtxtPhi.Name = "dtxtPhi";
            dtxtPhi.ReadOnly = true;
            dtxtPhi.Size = new Size(282, 23);
            dtxtPhi.Size = new Size(363, 27);
            dtxtPhi.TabIndex = 7;
            // 
            // dtxtWidth
            // 
            dtxtWidth.Dock = DockStyle.Fill;
            dtxtWidth.Location = new Point(102, 156);
            dtxtWidth.Margin = new Padding(2, 3, 2, 3);
            dtxtWidth.Location = new Point(132, 187);
            dtxtWidth.Margin = new Padding(3, 4, 3, 4);
            dtxtWidth.Name = "dtxtWidth";
            dtxtWidth.ReadOnly = true;
            dtxtWidth.Size = new Size(282, 23);
            dtxtWidth.Size = new Size(363, 27);
            dtxtWidth.TabIndex = 8;
            // 
            // label18
            // 
            label18.AutoSize = true;
            label18.Dock = DockStyle.Fill;
            label18.Location = new Point(3, 306);
            label18.Location = new Point(4, 366);
            label18.Margin = new Padding(4, 0, 4, 0);
            label18.Name = "label18";
            label18.Size = new Size(94, 51);
            label18.Size = new Size(121, 61);
            label18.TabIndex = 10;
            label18.Text = "数量";
            label18.TextAlign = ContentAlignment.TopCenter;
@@ -1187,19 +1218,21 @@
            // dtxtCount
            // 
            dtxtCount.Dock = DockStyle.Fill;
            dtxtCount.Location = new Point(103, 309);
            dtxtCount.Location = new Point(133, 370);
            dtxtCount.Margin = new Padding(4);
            dtxtCount.Name = "dtxtCount";
            dtxtCount.ReadOnly = true;
            dtxtCount.Size = new Size(280, 23);
            dtxtCount.Size = new Size(361, 27);
            dtxtCount.TabIndex = 11;
            // 
            // label23
            // 
            label23.AutoSize = true;
            label23.Dock = DockStyle.Fill;
            label23.Location = new Point(3, 255);
            label23.Location = new Point(4, 305);
            label23.Margin = new Padding(4, 0, 4, 0);
            label23.Name = "label23";
            label23.Size = new Size(94, 51);
            label23.Size = new Size(121, 61);
            label23.TabIndex = 12;
            label23.Text = "面积";
            label23.TextAlign = ContentAlignment.TopCenter;
@@ -1207,10 +1240,11 @@
            // dtxtArea
            // 
            dtxtArea.Dock = DockStyle.Fill;
            dtxtArea.Location = new Point(103, 258);
            dtxtArea.Location = new Point(133, 309);
            dtxtArea.Margin = new Padding(4);
            dtxtArea.Name = "dtxtArea";
            dtxtArea.ReadOnly = true;
            dtxtArea.Size = new Size(280, 23);
            dtxtArea.Size = new Size(361, 27);
            dtxtArea.TabIndex = 13;
            // 
            // imgTabControl
@@ -1219,18 +1253,20 @@
            imgTabControl.Controls.Add(tabPageRecordImage);
            imgTabControl.Dock = DockStyle.Fill;
            imgTabControl.Location = new Point(0, 0);
            imgTabControl.Margin = new Padding(4);
            imgTabControl.Name = "imgTabControl";
            imgTabControl.SelectedIndex = 0;
            imgTabControl.Size = new Size(640, 552);
            imgTabControl.Size = new Size(823, 652);
            imgTabControl.TabIndex = 49;
            // 
            // tabPageInputImage
            // 
            tabPageInputImage.Controls.Add(pnlInputImage);
            tabPageInputImage.Location = new Point(4, 26);
            tabPageInputImage.Location = new Point(4, 29);
            tabPageInputImage.Margin = new Padding(4);
            tabPageInputImage.Name = "tabPageInputImage";
            tabPageInputImage.Padding = new Padding(3);
            tabPageInputImage.Size = new Size(632, 522);
            tabPageInputImage.Padding = new Padding(4);
            tabPageInputImage.Size = new Size(815, 619);
            tabPageInputImage.TabIndex = 0;
            tabPageInputImage.Text = "输入图像";
            tabPageInputImage.UseVisualStyleBackColor = true;
@@ -1238,10 +1274,11 @@
            // tabPageRecordImage
            // 
            tabPageRecordImage.Controls.Add(pnlRecordImage);
            tabPageRecordImage.Location = new Point(4, 26);
            tabPageRecordImage.Location = new Point(4, 29);
            tabPageRecordImage.Margin = new Padding(4);
            tabPageRecordImage.Name = "tabPageRecordImage";
            tabPageRecordImage.Padding = new Padding(3);
            tabPageRecordImage.Size = new Size(632, 522);
            tabPageRecordImage.Padding = new Padding(4);
            tabPageRecordImage.Size = new Size(815, 619);
            tabPageRecordImage.TabIndex = 1;
            tabPageRecordImage.Text = "结果图像";
            tabPageRecordImage.UseVisualStyleBackColor = true;
@@ -1249,16 +1286,17 @@
            // pnlRecordImage
            // 
            pnlRecordImage.Dock = DockStyle.Fill;
            pnlRecordImage.Location = new Point(3, 3);
            pnlRecordImage.Margin = new Padding(4);
            pnlRecordImage.Location = new Point(4, 4);
            pnlRecordImage.Margin = new Padding(5);
            pnlRecordImage.Name = "pnlRecordImage";
            pnlRecordImage.Size = new Size(626, 516);
            pnlRecordImage.Size = new Size(807, 611);
            pnlRecordImage.TabIndex = 45;
            // 
            // splitContainer1
            // 
            splitContainer1.Dock = DockStyle.Fill;
            splitContainer1.Location = new Point(0, 25);
            splitContainer1.Location = new Point(0, 27);
            splitContainer1.Margin = new Padding(4);
            splitContainer1.Name = "splitContainer1";
            // 
            // splitContainer1.Panel1
@@ -1268,20 +1306,21 @@
            // splitContainer1.Panel2
            // 
            splitContainer1.Panel2.Controls.Add(imgTabControl);
            splitContainer1.Size = new Size(1044, 552);
            splitContainer1.SplitterDistance = 400;
            splitContainer1.Size = new Size(1342, 652);
            splitContainer1.SplitterDistance = 514;
            splitContainer1.SplitterWidth = 5;
            splitContainer1.TabIndex = 48;
            // 
            // HBlobToolEdit
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleDimensions = new SizeF(9F, 20F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(splitContainer1);
            Controls.Add(BtmStatusStrip);
            Controls.Add(TopToolStrip);
            Margin = new Padding(2, 3, 2, 3);
            Margin = new Padding(3, 4, 3, 4);
            Name = "HBlobToolEdit";
            Size = new Size(1044, 599);
            Size = new Size(1342, 705);
            Load += HBlobToolEdit_Load;
            tablePanelParas.ResumeLayout(false);
            tablePanelParas.PerformLayout();
LB_VisionProcesses/Alogrithms/Halcon/2D/HBlobTool/HBlobToolEdit.resx
@@ -121,9 +121,9 @@
    <value>17, 17</value>
  </metadata>
  <metadata name="TopToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>156, 17</value>
    <value>183, 17</value>
  </metadata>
  <metadata name="BtmStatusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>287, 17</value>
    <value>340, 17</value>
  </metadata>
</root>
LB_VisionProcesses/Alogrithms/Halcon/2D/HFindCode2dTool/HFindCode2dToolEdit.Designer.cs
@@ -91,9 +91,9 @@
            // tablePanelParas
            // 
            tablePanelParas.ColumnCount = 4;
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 90F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 116F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 90F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 116F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
            tablePanelParas.Controls.Add(label1, 0, 0);
            tablePanelParas.Controls.Add(dtxtMinThreshold, 1, 0);
@@ -110,8 +110,8 @@
            tablePanelParas.Controls.Add(label10, 2, 3);
            tablePanelParas.Controls.Add(dtxtCodeLength, 3, 3);
            tablePanelParas.Dock = DockStyle.Fill;
            tablePanelParas.Location = new Point(3, 3);
            tablePanelParas.Margin = new Padding(2, 3, 2, 3);
            tablePanelParas.Location = new Point(4, 4);
            tablePanelParas.Margin = new Padding(3, 4, 3, 4);
            tablePanelParas.Name = "tablePanelParas";
            tablePanelParas.RowCount = 10;
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
@@ -124,71 +124,71 @@
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Percent, 10.000001F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Percent, 10.000001F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
            tablePanelParas.Size = new Size(397, 510);
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 24F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 24F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 24F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 24F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 24F));
            tablePanelParas.Size = new Size(512, 603);
            tablePanelParas.TabIndex = 0;
            // 
            // label1
            // 
            label1.AutoSize = true;
            label1.Location = new Point(2, 0);
            label1.Margin = new Padding(2, 0, 2, 0);
            label1.MaximumSize = new Size(0, 28);
            label1.MinimumSize = new Size(0, 28);
            label1.Location = new Point(3, 0);
            label1.MaximumSize = new Size(0, 33);
            label1.MinimumSize = new Size(0, 33);
            label1.Name = "label1";
            label1.Size = new Size(68, 28);
            label1.Size = new Size(84, 33);
            label1.TabIndex = 0;
            label1.Text = "最小灰度值";
            label1.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtMinThreshold
            // 
            dtxtMinThreshold.Location = new Point(92, 3);
            dtxtMinThreshold.Margin = new Padding(2, 3, 2, 3);
            dtxtMinThreshold.Location = new Point(119, 4);
            dtxtMinThreshold.Margin = new Padding(3, 4, 3, 4);
            dtxtMinThreshold.Name = "dtxtMinThreshold";
            dtxtMinThreshold.Size = new Size(98, 23);
            dtxtMinThreshold.Size = new Size(125, 27);
            dtxtMinThreshold.TabIndex = 5;
            dtxtMinThreshold.Text = "80";
            // 
            // dtxtMaxThreshold
            // 
            dtxtMaxThreshold.Location = new Point(290, 3);
            dtxtMaxThreshold.Margin = new Padding(2, 3, 2, 3);
            dtxtMaxThreshold.Location = new Point(375, 4);
            dtxtMaxThreshold.Margin = new Padding(3, 4, 3, 4);
            dtxtMaxThreshold.Name = "dtxtMaxThreshold";
            dtxtMaxThreshold.Size = new Size(98, 23);
            dtxtMaxThreshold.Size = new Size(125, 27);
            dtxtMaxThreshold.TabIndex = 6;
            dtxtMaxThreshold.Text = "180";
            // 
            // label19
            // 
            label19.AutoSize = true;
            label19.Location = new Point(3, 51);
            label19.Location = new Point(4, 60);
            label19.Margin = new Padding(4, 0, 4, 0);
            label19.Name = "label19";
            label19.Size = new Size(56, 17);
            label19.Size = new Size(69, 20);
            label19.TabIndex = 19;
            label19.Text = "最小数量";
            // 
            // dtxtMinCount
            // 
            dtxtMinCount.Location = new Point(93, 54);
            dtxtMinCount.Location = new Point(120, 64);
            dtxtMinCount.Margin = new Padding(4, 4, 4, 4);
            dtxtMinCount.Name = "dtxtMinCount";
            dtxtMinCount.Size = new Size(97, 23);
            dtxtMinCount.Size = new Size(124, 27);
            dtxtMinCount.TabIndex = 17;
            dtxtMinCount.Text = "0";
            // 
            // label2
            // 
            label2.AutoSize = true;
            label2.Location = new Point(200, 0);
            label2.Margin = new Padding(2, 0, 2, 0);
            label2.MaximumSize = new Size(0, 28);
            label2.MinimumSize = new Size(0, 28);
            label2.Location = new Point(259, 0);
            label2.MaximumSize = new Size(0, 33);
            label2.MinimumSize = new Size(0, 33);
            label2.Name = "label2";
            label2.Size = new Size(68, 28);
            label2.Size = new Size(84, 33);
            label2.TabIndex = 1;
            label2.Text = "最大灰度值";
            label2.TextAlign = ContentAlignment.MiddleCenter;
@@ -196,84 +196,93 @@
            // label20
            // 
            label20.AutoSize = true;
            label20.Location = new Point(201, 51);
            label20.Location = new Point(260, 60);
            label20.Margin = new Padding(4, 0, 4, 0);
            label20.Name = "label20";
            label20.Size = new Size(56, 17);
            label20.Size = new Size(69, 20);
            label20.TabIndex = 20;
            label20.Text = "最大数量";
            // 
            // dtxtMaxCount
            // 
            dtxtMaxCount.Location = new Point(291, 54);
            dtxtMaxCount.Location = new Point(376, 64);
            dtxtMaxCount.Margin = new Padding(4, 4, 4, 4);
            dtxtMaxCount.Name = "dtxtMaxCount";
            dtxtMaxCount.Size = new Size(97, 23);
            dtxtMaxCount.Size = new Size(124, 27);
            dtxtMaxCount.TabIndex = 18;
            dtxtMaxCount.Text = "9999";
            // 
            // label3
            // 
            label3.AutoSize = true;
            label3.Location = new Point(3, 153);
            label3.Location = new Point(4, 180);
            label3.Margin = new Padding(4, 0, 4, 0);
            label3.Name = "label3";
            label3.Size = new Size(44, 17);
            label3.Size = new Size(54, 20);
            label3.TabIndex = 21;
            label3.Text = "条码头";
            // 
            // stxtCodeHead
            // 
            stxtCodeHead.Location = new Point(93, 156);
            stxtCodeHead.Location = new Point(120, 184);
            stxtCodeHead.Margin = new Padding(4, 4, 4, 4);
            stxtCodeHead.Name = "stxtCodeHead";
            stxtCodeHead.Size = new Size(97, 23);
            stxtCodeHead.Size = new Size(124, 27);
            stxtCodeHead.TabIndex = 22;
            // 
            // label4
            // 
            label4.AutoSize = true;
            label4.Location = new Point(3, 102);
            label4.Location = new Point(4, 120);
            label4.Margin = new Padding(4, 0, 4, 0);
            label4.Name = "label4";
            label4.Size = new Size(56, 17);
            label4.Size = new Size(69, 20);
            label4.TabIndex = 23;
            label4.Text = "条码类型";
            // 
            // cmbCode2dType
            // 
            cmbCode2dType.FormattingEnabled = true;
            cmbCode2dType.Location = new Point(93, 105);
            cmbCode2dType.Location = new Point(120, 124);
            cmbCode2dType.Margin = new Padding(4, 4, 4, 4);
            cmbCode2dType.Name = "cmbCode2dType";
            cmbCode2dType.Size = new Size(97, 25);
            cmbCode2dType.Size = new Size(124, 28);
            cmbCode2dType.TabIndex = 24;
            // 
            // label10
            // 
            label10.AutoSize = true;
            label10.Location = new Point(201, 153);
            label10.Location = new Point(260, 180);
            label10.Margin = new Padding(4, 0, 4, 0);
            label10.Name = "label10";
            label10.Size = new Size(56, 17);
            label10.Size = new Size(69, 20);
            label10.TabIndex = 25;
            label10.Text = "条码长度";
            // 
            // dtxtCodeLength
            // 
            dtxtCodeLength.Location = new Point(291, 156);
            dtxtCodeLength.Location = new Point(376, 184);
            dtxtCodeLength.Margin = new Padding(4, 4, 4, 4);
            dtxtCodeLength.Name = "dtxtCodeLength";
            dtxtCodeLength.Size = new Size(97, 23);
            dtxtCodeLength.Size = new Size(124, 27);
            dtxtCodeLength.TabIndex = 26;
            // 
            // pnlInputImage
            // 
            pnlInputImage.Dock = DockStyle.Fill;
            pnlInputImage.Location = new Point(3, 3);
            pnlInputImage.Margin = new Padding(4);
            pnlInputImage.Location = new Point(4, 4);
            pnlInputImage.Margin = new Padding(5, 5, 5, 5);
            pnlInputImage.Name = "pnlInputImage";
            pnlInputImage.Size = new Size(607, 510);
            pnlInputImage.Size = new Size(782, 603);
            pnlInputImage.TabIndex = 44;
            // 
            // TopToolStrip
            // 
            TopToolStrip.ImageScalingSize = new Size(20, 20);
            TopToolStrip.Items.AddRange(new ToolStripItem[] { btnRun, btnLoadImage, btnSaveParas, btnLoadParas });
            TopToolStrip.Location = new Point(0, 0);
            TopToolStrip.Name = "TopToolStrip";
            TopToolStrip.Size = new Size(1044, 25);
            TopToolStrip.Size = new Size(1342, 27);
            TopToolStrip.TabIndex = 45;
            TopToolStrip.Text = "toolStrip1";
            // 
@@ -282,7 +291,7 @@
            btnRun.BackgroundImageLayout = ImageLayout.Zoom;
            btnRun.ImageTransparentColor = Color.Magenta;
            btnRun.Name = "btnRun";
            btnRun.Size = new Size(36, 22);
            btnRun.Size = new Size(43, 24);
            btnRun.Text = "运行";
            btnRun.Click += btnRun_Click;
            // 
@@ -290,7 +299,7 @@
            // 
            btnLoadImage.ImageTransparentColor = Color.Magenta;
            btnLoadImage.Name = "btnLoadImage";
            btnLoadImage.Size = new Size(36, 22);
            btnLoadImage.Size = new Size(43, 24);
            btnLoadImage.Text = "导图";
            btnLoadImage.Click += btnLoadImage_Click;
            // 
@@ -298,7 +307,7 @@
            // 
            btnSaveParas.ImageTransparentColor = Color.Magenta;
            btnSaveParas.Name = "btnSaveParas";
            btnSaveParas.Size = new Size(36, 22);
            btnSaveParas.Size = new Size(43, 24);
            btnSaveParas.Text = "保存";
            btnSaveParas.Click += btnSaveParas_Click;
            // 
@@ -306,35 +315,37 @@
            // 
            btnLoadParas.ImageTransparentColor = Color.Magenta;
            btnLoadParas.Name = "btnLoadParas";
            btnLoadParas.Size = new Size(36, 22);
            btnLoadParas.Size = new Size(43, 24);
            btnLoadParas.Text = "加载";
            btnLoadParas.Click += btnLoadParas_Click;
            // 
            // BtmStatusStrip
            // 
            BtmStatusStrip.ImageScalingSize = new Size(20, 20);
            BtmStatusStrip.Items.AddRange(new ToolStripItem[] { lblResult, lblMsg, lblRunTime });
            BtmStatusStrip.Location = new Point(0, 577);
            BtmStatusStrip.Location = new Point(0, 679);
            BtmStatusStrip.Name = "BtmStatusStrip";
            BtmStatusStrip.Size = new Size(1044, 22);
            BtmStatusStrip.Padding = new Padding(1, 0, 18, 0);
            BtmStatusStrip.Size = new Size(1342, 26);
            BtmStatusStrip.TabIndex = 46;
            BtmStatusStrip.Text = "statusStrip1";
            // 
            // lblResult
            // 
            lblResult.Name = "lblResult";
            lblResult.Size = new Size(34, 17);
            lblResult.Size = new Size(42, 20);
            lblResult.Text = "True";
            // 
            // lblMsg
            // 
            lblMsg.Name = "lblMsg";
            lblMsg.Size = new Size(56, 17);
            lblMsg.Size = new Size(69, 20);
            lblMsg.Text = "运行成功";
            // 
            // lblRunTime
            // 
            lblRunTime.Name = "lblRunTime";
            lblRunTime.Size = new Size(32, 17);
            lblRunTime.Size = new Size(39, 20);
            lblRunTime.Text = "0ms";
            // 
            // MainTableLayoutPanel
@@ -345,11 +356,12 @@
            MainTableLayoutPanel.Controls.Add(parasTabControl, 0, 0);
            MainTableLayoutPanel.Controls.Add(imgTabControl, 1, 0);
            MainTableLayoutPanel.Dock = DockStyle.Fill;
            MainTableLayoutPanel.Location = new Point(0, 25);
            MainTableLayoutPanel.Location = new Point(0, 27);
            MainTableLayoutPanel.Margin = new Padding(4, 4, 4, 4);
            MainTableLayoutPanel.Name = "MainTableLayoutPanel";
            MainTableLayoutPanel.RowCount = 1;
            MainTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
            MainTableLayoutPanel.Size = new Size(1044, 552);
            MainTableLayoutPanel.Size = new Size(1342, 652);
            MainTableLayoutPanel.TabIndex = 47;
            // 
            // parasTabControl
@@ -358,19 +370,21 @@
            parasTabControl.Controls.Add(tabPage5);
            parasTabControl.Controls.Add(tabPage2);
            parasTabControl.Dock = DockStyle.Fill;
            parasTabControl.Location = new Point(3, 3);
            parasTabControl.Location = new Point(4, 4);
            parasTabControl.Margin = new Padding(4, 4, 4, 4);
            parasTabControl.Name = "parasTabControl";
            parasTabControl.SelectedIndex = 0;
            parasTabControl.Size = new Size(411, 546);
            parasTabControl.Size = new Size(528, 644);
            parasTabControl.TabIndex = 48;
            // 
            // tabPage1
            // 
            tabPage1.Controls.Add(tablePanelParas);
            tabPage1.Location = new Point(4, 26);
            tabPage1.Location = new Point(4, 29);
            tabPage1.Margin = new Padding(4, 4, 4, 4);
            tabPage1.Name = "tabPage1";
            tabPage1.Padding = new Padding(3);
            tabPage1.Size = new Size(403, 516);
            tabPage1.Padding = new Padding(4, 4, 4, 4);
            tabPage1.Size = new Size(520, 611);
            tabPage1.TabIndex = 0;
            tabPage1.Text = "输入参数";
            tabPage1.UseVisualStyleBackColor = true;
@@ -378,9 +392,10 @@
            // tabPage5
            // 
            tabPage5.Controls.Add(tableLayoutPanel2);
            tabPage5.Location = new Point(4, 26);
            tabPage5.Location = new Point(4, 29);
            tabPage5.Margin = new Padding(4, 4, 4, 4);
            tabPage5.Name = "tabPage5";
            tabPage5.Size = new Size(403, 516);
            tabPage5.Size = new Size(520, 611);
            tabPage5.TabIndex = 2;
            tabPage5.Text = "运行参数";
            tabPage5.UseVisualStyleBackColor = true;
@@ -388,30 +403,32 @@
            // tableLayoutPanel2
            // 
            tableLayoutPanel2.ColumnCount = 4;
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 60F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 150F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 20F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 77F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 193F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 26F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
            tableLayoutPanel2.Controls.Add(cmbTypeRoi, 1, 0);
            tableLayoutPanel2.Controls.Add(label21, 0, 0);
            tableLayoutPanel2.Controls.Add(label22, 0, 1);
            tableLayoutPanel2.Controls.Add(cmbFixture, 1, 1);
            tableLayoutPanel2.Controls.Add(ckbDrawRoi, 2, 0);
            tableLayoutPanel2.Location = new Point(3, 3);
            tableLayoutPanel2.Location = new Point(4, 4);
            tableLayoutPanel2.Margin = new Padding(4, 4, 4, 4);
            tableLayoutPanel2.Name = "tableLayoutPanel2";
            tableLayoutPanel2.RowCount = 3;
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
            tableLayoutPanel2.Size = new Size(323, 196);
            tableLayoutPanel2.Size = new Size(415, 231);
            tableLayoutPanel2.TabIndex = 5;
            // 
            // cmbTypeRoi
            // 
            cmbTypeRoi.FormattingEnabled = true;
            cmbTypeRoi.Location = new Point(63, 3);
            cmbTypeRoi.Location = new Point(81, 4);
            cmbTypeRoi.Margin = new Padding(4, 4, 4, 4);
            cmbTypeRoi.Name = "cmbTypeRoi";
            cmbTypeRoi.Size = new Size(121, 25);
            cmbTypeRoi.Size = new Size(154, 28);
            cmbTypeRoi.TabIndex = 1;
            cmbTypeRoi.SelectedIndexChanged += cmbTypeRoi_SelectedIndexChanged;
            // 
@@ -419,9 +436,10 @@
            // 
            label21.AutoSize = true;
            label21.Dock = DockStyle.Fill;
            label21.Location = new Point(3, 0);
            label21.Location = new Point(4, 0);
            label21.Margin = new Padding(4, 0, 4, 0);
            label21.Name = "label21";
            label21.Size = new Size(54, 30);
            label21.Size = new Size(69, 35);
            label21.TabIndex = 3;
            label21.Text = "ROI";
            label21.TextAlign = ContentAlignment.MiddleCenter;
@@ -430,9 +448,10 @@
            // 
            label22.AutoSize = true;
            label22.Dock = DockStyle.Fill;
            label22.Location = new Point(3, 30);
            label22.Location = new Point(4, 35);
            label22.Margin = new Padding(4, 0, 4, 0);
            label22.Name = "label22";
            label22.Size = new Size(54, 30);
            label22.Size = new Size(69, 35);
            label22.TabIndex = 4;
            label22.Text = "Fixture";
            label22.TextAlign = ContentAlignment.MiddleCenter;
@@ -440,9 +459,10 @@
            // cmbFixture
            // 
            cmbFixture.FormattingEnabled = true;
            cmbFixture.Location = new Point(63, 33);
            cmbFixture.Location = new Point(81, 39);
            cmbFixture.Margin = new Padding(4, 4, 4, 4);
            cmbFixture.Name = "cmbFixture";
            cmbFixture.Size = new Size(121, 25);
            cmbFixture.Size = new Size(154, 28);
            cmbFixture.TabIndex = 5;
            cmbFixture.SelectedIndexChanged += cmbFixture_SelectedIndexChanged;
            // 
@@ -450,9 +470,10 @@
            // 
            ckbDrawRoi.AutoSize = true;
            ckbDrawRoi.CheckAlign = ContentAlignment.MiddleCenter;
            ckbDrawRoi.Location = new Point(213, 3);
            ckbDrawRoi.Location = new Point(274, 4);
            ckbDrawRoi.Margin = new Padding(4, 4, 4, 4);
            ckbDrawRoi.Name = "ckbDrawRoi";
            ckbDrawRoi.Size = new Size(14, 14);
            ckbDrawRoi.Size = new Size(18, 17);
            ckbDrawRoi.TabIndex = 2;
            ckbDrawRoi.UseVisualStyleBackColor = true;
            ckbDrawRoi.CheckedChanged += ckbDrawRoi_CheckedChanged;
@@ -460,10 +481,11 @@
            // tabPage2
            // 
            tabPage2.Controls.Add(tableLayoutResults);
            tabPage2.Location = new Point(4, 26);
            tabPage2.Location = new Point(4, 29);
            tabPage2.Margin = new Padding(4, 4, 4, 4);
            tabPage2.Name = "tabPage2";
            tabPage2.Padding = new Padding(3);
            tabPage2.Size = new Size(403, 516);
            tabPage2.Padding = new Padding(4, 4, 4, 4);
            tabPage2.Size = new Size(520, 611);
            tabPage2.TabIndex = 1;
            tabPage2.Text = "输出结果";
            tabPage2.UseVisualStyleBackColor = true;
@@ -471,15 +493,15 @@
            // tableLayoutResults
            // 
            tableLayoutResults.ColumnCount = 2;
            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 100F));
            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 129F));
            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
            tableLayoutResults.Controls.Add(label5, 0, 0);
            tableLayoutResults.Controls.Add(stxtCodeStrings, 1, 0);
            tableLayoutResults.Controls.Add(label18, 0, 1);
            tableLayoutResults.Controls.Add(dtxtCount, 1, 1);
            tableLayoutResults.Dock = DockStyle.Fill;
            tableLayoutResults.Location = new Point(3, 3);
            tableLayoutResults.Margin = new Padding(2, 3, 2, 3);
            tableLayoutResults.Location = new Point(4, 4);
            tableLayoutResults.Margin = new Padding(3, 4, 3, 4);
            tableLayoutResults.Name = "tableLayoutResults";
            tableLayoutResults.RowCount = 10;
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
@@ -492,19 +514,18 @@
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.Size = new Size(397, 510);
            tableLayoutResults.Size = new Size(512, 603);
            tableLayoutResults.TabIndex = 1;
            // 
            // label5
            // 
            label5.AutoSize = true;
            label5.Dock = DockStyle.Fill;
            label5.Location = new Point(2, 0);
            label5.Margin = new Padding(2, 0, 2, 0);
            label5.MaximumSize = new Size(0, 28);
            label5.MinimumSize = new Size(0, 28);
            label5.Location = new Point(3, 0);
            label5.MaximumSize = new Size(0, 33);
            label5.MinimumSize = new Size(0, 33);
            label5.Name = "label5";
            label5.Size = new Size(96, 28);
            label5.Size = new Size(123, 33);
            label5.TabIndex = 0;
            label5.Text = "结果";
            label5.TextAlign = ContentAlignment.TopCenter;
@@ -512,21 +533,22 @@
            // stxtCodeStrings
            // 
            stxtCodeStrings.Dock = DockStyle.Fill;
            stxtCodeStrings.Location = new Point(102, 3);
            stxtCodeStrings.Margin = new Padding(2, 3, 2, 3);
            stxtCodeStrings.Location = new Point(132, 4);
            stxtCodeStrings.Margin = new Padding(3, 4, 3, 4);
            stxtCodeStrings.Multiline = true;
            stxtCodeStrings.Name = "stxtCodeStrings";
            stxtCodeStrings.ReadOnly = true;
            stxtCodeStrings.Size = new Size(293, 45);
            stxtCodeStrings.Size = new Size(377, 52);
            stxtCodeStrings.TabIndex = 5;
            // 
            // label18
            // 
            label18.AutoSize = true;
            label18.Dock = DockStyle.Fill;
            label18.Location = new Point(3, 51);
            label18.Location = new Point(4, 60);
            label18.Margin = new Padding(4, 0, 4, 0);
            label18.Name = "label18";
            label18.Size = new Size(94, 51);
            label18.Size = new Size(121, 60);
            label18.TabIndex = 10;
            label18.Text = "数量";
            label18.TextAlign = ContentAlignment.TopCenter;
@@ -534,10 +556,11 @@
            // dtxtCount
            // 
            dtxtCount.Dock = DockStyle.Fill;
            dtxtCount.Location = new Point(103, 54);
            dtxtCount.Location = new Point(133, 64);
            dtxtCount.Margin = new Padding(4, 4, 4, 4);
            dtxtCount.Name = "dtxtCount";
            dtxtCount.ReadOnly = true;
            dtxtCount.Size = new Size(291, 23);
            dtxtCount.Size = new Size(375, 27);
            dtxtCount.TabIndex = 11;
            // 
            // imgTabControl
@@ -545,19 +568,21 @@
            imgTabControl.Controls.Add(tabPageInputImage);
            imgTabControl.Controls.Add(tabPageRecordImage);
            imgTabControl.Dock = DockStyle.Fill;
            imgTabControl.Location = new Point(420, 3);
            imgTabControl.Location = new Point(540, 4);
            imgTabControl.Margin = new Padding(4, 4, 4, 4);
            imgTabControl.Name = "imgTabControl";
            imgTabControl.SelectedIndex = 0;
            imgTabControl.Size = new Size(621, 546);
            imgTabControl.Size = new Size(798, 644);
            imgTabControl.TabIndex = 49;
            // 
            // tabPageInputImage
            // 
            tabPageInputImage.Controls.Add(pnlInputImage);
            tabPageInputImage.Location = new Point(4, 26);
            tabPageInputImage.Location = new Point(4, 29);
            tabPageInputImage.Margin = new Padding(4, 4, 4, 4);
            tabPageInputImage.Name = "tabPageInputImage";
            tabPageInputImage.Padding = new Padding(3);
            tabPageInputImage.Size = new Size(613, 516);
            tabPageInputImage.Padding = new Padding(4, 4, 4, 4);
            tabPageInputImage.Size = new Size(790, 611);
            tabPageInputImage.TabIndex = 0;
            tabPageInputImage.Text = "输入图像";
            tabPageInputImage.UseVisualStyleBackColor = true;
@@ -565,10 +590,11 @@
            // tabPageRecordImage
            // 
            tabPageRecordImage.Controls.Add(pnlRecordImage);
            tabPageRecordImage.Location = new Point(4, 26);
            tabPageRecordImage.Location = new Point(4, 29);
            tabPageRecordImage.Margin = new Padding(4, 4, 4, 4);
            tabPageRecordImage.Name = "tabPageRecordImage";
            tabPageRecordImage.Padding = new Padding(3);
            tabPageRecordImage.Size = new Size(613, 516);
            tabPageRecordImage.Padding = new Padding(4, 4, 4, 4);
            tabPageRecordImage.Size = new Size(790, 611);
            tabPageRecordImage.TabIndex = 1;
            tabPageRecordImage.Text = "结果图像";
            tabPageRecordImage.UseVisualStyleBackColor = true;
@@ -576,22 +602,22 @@
            // pnlRecordImage
            // 
            pnlRecordImage.Dock = DockStyle.Fill;
            pnlRecordImage.Location = new Point(3, 3);
            pnlRecordImage.Margin = new Padding(4);
            pnlRecordImage.Location = new Point(4, 4);
            pnlRecordImage.Margin = new Padding(5, 5, 5, 5);
            pnlRecordImage.Name = "pnlRecordImage";
            pnlRecordImage.Size = new Size(607, 510);
            pnlRecordImage.Size = new Size(782, 603);
            pnlRecordImage.TabIndex = 45;
            // 
            // HFindCode2dToolEdit
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleDimensions = new SizeF(9F, 20F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(MainTableLayoutPanel);
            Controls.Add(BtmStatusStrip);
            Controls.Add(TopToolStrip);
            Margin = new Padding(2, 3, 2, 3);
            Margin = new Padding(3, 4, 3, 4);
            Name = "HFindCode2dToolEdit";
            Size = new Size(1044, 599);
            Size = new Size(1342, 705);
            Load += HFindCode2dToolEdit_Load;
            tablePanelParas.ResumeLayout(false);
            tablePanelParas.PerformLayout();
LB_VisionProcesses/Alogrithms/Halcon/2D/HFindCode2dTool/HFindCode2dToolEdit.resx
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Microsoft ResX Schema
    Version 2.0
@@ -48,7 +48,7 @@
    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
@@ -117,10 +117,13 @@
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="TopToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
  <metadata name="lblMsgToolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="TopToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>183, 17</value>
  </metadata>
  <metadata name="BtmStatusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>148, 17</value>
    <value>340, 17</value>
  </metadata>
</root>
LB_VisionProcesses/Alogrithms/Halcon/2D/HFindLineTool/HFindLineToolEdit.Designer.cs
@@ -47,6 +47,7 @@
            label13 = new Label();
            cmbTransition = new ComboBox();
            cmbSelect = new ComboBox();
            btnShowROI = new Button();
            pnlInputImage = new Panel();
            TopToolStrip = new ToolStrip();
            btnRun = new ToolStripButton();
@@ -85,7 +86,6 @@
            tabPageInputImage = new TabPage();
            tabPageRecordImage = new TabPage();
            pnlRecordImage = new Panel();
            btnShowROI = new Button();
            tablePanelParas.SuspendLayout();
            TopToolStrip.SuspendLayout();
            BtmStatusStrip.SuspendLayout();
@@ -104,9 +104,9 @@
            // tablePanelParas
            // 
            tablePanelParas.ColumnCount = 4;
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 90F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 116F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 90F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 116F));
            tablePanelParas.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
            tablePanelParas.Controls.Add(label1, 0, 0);
            tablePanelParas.Controls.Add(itxtCaliperCount, 1, 0);
@@ -126,8 +126,8 @@
            tablePanelParas.Controls.Add(cmbSelect, 3, 3);
            tablePanelParas.Controls.Add(btnShowROI, 0, 4);
            tablePanelParas.Dock = DockStyle.Fill;
            tablePanelParas.Location = new Point(3, 3);
            tablePanelParas.Margin = new Padding(2, 3, 2, 3);
            tablePanelParas.Location = new Point(4, 4);
            tablePanelParas.Margin = new Padding(3, 4, 3, 4);
            tablePanelParas.Name = "tablePanelParas";
            tablePanelParas.RowCount = 10;
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
@@ -140,155 +140,148 @@
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Percent, 10.000001F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Percent, 10.000001F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
            tablePanelParas.Size = new Size(397, 510);
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 24F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 24F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 24F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 24F));
            tablePanelParas.RowStyles.Add(new RowStyle(SizeType.Absolute, 24F));
            tablePanelParas.Size = new Size(512, 603);
            tablePanelParas.TabIndex = 0;
            // 
            // label1
            // 
            label1.AutoSize = true;
            label1.Location = new Point(2, 0);
            label1.Margin = new Padding(2, 0, 2, 0);
            label1.MaximumSize = new Size(0, 28);
            label1.MinimumSize = new Size(0, 28);
            label1.Location = new Point(3, 0);
            label1.MaximumSize = new Size(0, 33);
            label1.MinimumSize = new Size(0, 33);
            label1.Name = "label1";
            label1.Size = new Size(56, 28);
            label1.Size = new Size(69, 33);
            label1.TabIndex = 0;
            label1.Text = "卡尺数量";
            label1.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // itxtCaliperCount
            // 
            itxtCaliperCount.Location = new Point(92, 3);
            itxtCaliperCount.Margin = new Padding(2, 3, 2, 3);
            itxtCaliperCount.Location = new Point(119, 4);
            itxtCaliperCount.Margin = new Padding(3, 4, 3, 4);
            itxtCaliperCount.Name = "itxtCaliperCount";
            itxtCaliperCount.Size = new Size(98, 23);
            itxtCaliperCount.Size = new Size(125, 27);
            itxtCaliperCount.TabIndex = 5;
            itxtCaliperCount.Text = "6";
            // 
            // label2
            // 
            label2.AutoSize = true;
            label2.Location = new Point(200, 0);
            label2.Margin = new Padding(2, 0, 2, 0);
            label2.MaximumSize = new Size(0, 28);
            label2.MinimumSize = new Size(0, 28);
            label2.Location = new Point(259, 0);
            label2.MaximumSize = new Size(0, 33);
            label2.MinimumSize = new Size(0, 33);
            label2.Name = "label2";
            label2.Size = new Size(56, 28);
            label2.Size = new Size(69, 33);
            label2.TabIndex = 1;
            label2.Text = "卡尺长度";
            label2.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtCaliperHeight
            // 
            dtxtCaliperHeight.Location = new Point(290, 3);
            dtxtCaliperHeight.Margin = new Padding(2, 3, 2, 3);
            dtxtCaliperHeight.Location = new Point(375, 4);
            dtxtCaliperHeight.Margin = new Padding(3, 4, 3, 4);
            dtxtCaliperHeight.Name = "dtxtCaliperHeight";
            dtxtCaliperHeight.Size = new Size(98, 23);
            dtxtCaliperHeight.Size = new Size(125, 27);
            dtxtCaliperHeight.TabIndex = 6;
            dtxtCaliperHeight.Text = "30";
            // 
            // label3
            // 
            label3.AutoSize = true;
            label3.Location = new Point(2, 51);
            label3.Margin = new Padding(2, 0, 2, 0);
            label3.MaximumSize = new Size(0, 28);
            label3.MinimumSize = new Size(0, 28);
            label3.Location = new Point(3, 60);
            label3.MaximumSize = new Size(0, 33);
            label3.MinimumSize = new Size(0, 33);
            label3.Name = "label3";
            label3.Size = new Size(56, 28);
            label3.Size = new Size(69, 33);
            label3.TabIndex = 2;
            label3.Text = "卡尺宽度";
            label3.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // dtxtCaliperWidth
            // 
            dtxtCaliperWidth.Location = new Point(92, 54);
            dtxtCaliperWidth.Margin = new Padding(2, 3, 2, 3);
            dtxtCaliperWidth.Location = new Point(119, 64);
            dtxtCaliperWidth.Margin = new Padding(3, 4, 3, 4);
            dtxtCaliperWidth.Name = "dtxtCaliperWidth";
            dtxtCaliperWidth.Size = new Size(98, 23);
            dtxtCaliperWidth.Size = new Size(125, 27);
            dtxtCaliperWidth.TabIndex = 7;
            dtxtCaliperWidth.Text = "10";
            // 
            // label4
            // 
            label4.AutoSize = true;
            label4.Location = new Point(200, 51);
            label4.Margin = new Padding(2, 0, 2, 0);
            label4.MaximumSize = new Size(0, 28);
            label4.MinimumSize = new Size(0, 28);
            label4.Location = new Point(259, 60);
            label4.MaximumSize = new Size(0, 33);
            label4.MinimumSize = new Size(0, 33);
            label4.Name = "label4";
            label4.Size = new Size(80, 28);
            label4.Size = new Size(99, 33);
            label4.TabIndex = 3;
            label4.Text = "过滤一半像素";
            label4.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // itxtSigma
            // 
            itxtSigma.Location = new Point(290, 54);
            itxtSigma.Margin = new Padding(2, 3, 2, 3);
            itxtSigma.Location = new Point(375, 64);
            itxtSigma.Margin = new Padding(3, 4, 3, 4);
            itxtSigma.Name = "itxtSigma";
            itxtSigma.Size = new Size(98, 23);
            itxtSigma.Size = new Size(125, 27);
            itxtSigma.TabIndex = 8;
            itxtSigma.Text = "0";
            // 
            // label10
            // 
            label10.AutoSize = true;
            label10.Location = new Point(2, 102);
            label10.Margin = new Padding(2, 0, 2, 0);
            label10.MaximumSize = new Size(0, 28);
            label10.MinimumSize = new Size(0, 28);
            label10.Location = new Point(3, 120);
            label10.MaximumSize = new Size(0, 33);
            label10.MinimumSize = new Size(0, 33);
            label10.Name = "label10";
            label10.Size = new Size(68, 28);
            label10.Size = new Size(84, 33);
            label10.TabIndex = 9;
            label10.Text = "对比度阈值";
            label10.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // itxtThreshold
            // 
            itxtThreshold.Location = new Point(92, 105);
            itxtThreshold.Margin = new Padding(2, 3, 2, 3);
            itxtThreshold.Location = new Point(119, 124);
            itxtThreshold.Margin = new Padding(3, 4, 3, 4);
            itxtThreshold.Name = "itxtThreshold";
            itxtThreshold.Size = new Size(98, 23);
            itxtThreshold.Size = new Size(125, 27);
            itxtThreshold.TabIndex = 9;
            itxtThreshold.Text = "0";
            // 
            // label11
            // 
            label11.AutoSize = true;
            label11.Location = new Point(200, 102);
            label11.Margin = new Padding(2, 0, 2, 0);
            label11.MaximumSize = new Size(0, 28);
            label11.MinimumSize = new Size(0, 28);
            label11.Location = new Point(259, 120);
            label11.MaximumSize = new Size(0, 33);
            label11.MinimumSize = new Size(0, 33);
            label11.Name = "label11";
            label11.Size = new Size(56, 28);
            label11.Size = new Size(69, 33);
            label11.TabIndex = 10;
            label11.Text = "忽略点数";
            label11.TextAlign = ContentAlignment.MiddleCenter;
            // 
            // itxtIgnoreCount
            // 
            itxtIgnoreCount.Location = new Point(290, 105);
            itxtIgnoreCount.Margin = new Padding(2, 3, 2, 3);
            itxtIgnoreCount.Location = new Point(375, 124);
            itxtIgnoreCount.Margin = new Padding(3, 4, 3, 4);
            itxtIgnoreCount.Name = "itxtIgnoreCount";
            itxtIgnoreCount.Size = new Size(98, 23);
            itxtIgnoreCount.Size = new Size(125, 27);
            itxtIgnoreCount.TabIndex = 9;
            itxtIgnoreCount.Text = "0";
            // 
            // label12
            // 
            label12.AutoSize = true;
            label12.Location = new Point(2, 153);
            label12.Margin = new Padding(2, 0, 2, 0);
            label12.MaximumSize = new Size(0, 28);
            label12.MinimumSize = new Size(0, 28);
            label12.Location = new Point(3, 180);
            label12.MaximumSize = new Size(0, 33);
            label12.MinimumSize = new Size(0, 33);
            label12.Name = "label12";
            label12.Size = new Size(32, 28);
            label12.Size = new Size(39, 33);
            label12.TabIndex = 11;
            label12.Text = "极性";
            label12.TextAlign = ContentAlignment.MiddleCenter;
@@ -296,12 +289,11 @@
            // label13
            // 
            label13.AutoSize = true;
            label13.Location = new Point(200, 153);
            label13.Margin = new Padding(2, 0, 2, 0);
            label13.MaximumSize = new Size(0, 28);
            label13.MinimumSize = new Size(0, 28);
            label13.Location = new Point(259, 180);
            label13.MaximumSize = new Size(0, 33);
            label13.MinimumSize = new Size(0, 33);
            label13.Name = "label13";
            label13.Size = new Size(56, 28);
            label13.Size = new Size(69, 33);
            label13.TabIndex = 12;
            label13.Text = "边缘位置";
            label13.TextAlign = ContentAlignment.MiddleCenter;
@@ -309,34 +301,49 @@
            // cmbTransition
            // 
            cmbTransition.FormattingEnabled = true;
            cmbTransition.Location = new Point(93, 156);
            cmbTransition.Location = new Point(120, 184);
            cmbTransition.Margin = new Padding(4, 4, 4, 4);
            cmbTransition.Name = "cmbTransition";
            cmbTransition.Size = new Size(102, 25);
            cmbTransition.Size = new Size(130, 28);
            cmbTransition.TabIndex = 13;
            // 
            // cmbSelect
            // 
            cmbSelect.FormattingEnabled = true;
            cmbSelect.Location = new Point(291, 156);
            cmbSelect.Location = new Point(376, 184);
            cmbSelect.Margin = new Padding(4, 4, 4, 4);
            cmbSelect.Name = "cmbSelect";
            cmbSelect.Size = new Size(103, 25);
            cmbSelect.Size = new Size(131, 28);
            cmbSelect.TabIndex = 14;
            //
            // btnShowROI
            //
            btnShowROI.Dock = DockStyle.Fill;
            btnShowROI.Location = new Point(4, 244);
            btnShowROI.Margin = new Padding(4, 4, 4, 4);
            btnShowROI.Name = "btnShowROI";
            btnShowROI.Size = new Size(108, 52);
            btnShowROI.TabIndex = 15;
            btnShowROI.Text = "显示找线区域";
            btnShowROI.UseVisualStyleBackColor = true;
            btnShowROI.Click += btnShowROI_Click;
            // 
            // pnlInputImage
            // 
            pnlInputImage.Dock = DockStyle.Fill;
            pnlInputImage.Location = new Point(3, 3);
            pnlInputImage.Margin = new Padding(4);
            pnlInputImage.Location = new Point(4, 4);
            pnlInputImage.Margin = new Padding(5, 5, 5, 5);
            pnlInputImage.Name = "pnlInputImage";
            pnlInputImage.Size = new Size(607, 510);
            pnlInputImage.Size = new Size(782, 603);
            pnlInputImage.TabIndex = 44;
            // 
            // TopToolStrip
            // 
            TopToolStrip.ImageScalingSize = new Size(20, 20);
            TopToolStrip.Items.AddRange(new ToolStripItem[] { btnRun, btnLoadImage, btnSaveParas, btnLoadParas });
            TopToolStrip.Location = new Point(0, 0);
            TopToolStrip.Name = "TopToolStrip";
            TopToolStrip.Size = new Size(1044, 25);
            TopToolStrip.Size = new Size(1342, 27);
            TopToolStrip.TabIndex = 45;
            TopToolStrip.Text = "toolStrip1";
            // 
@@ -345,7 +352,7 @@
            btnRun.BackgroundImageLayout = ImageLayout.Zoom;
            btnRun.ImageTransparentColor = Color.Magenta;
            btnRun.Name = "btnRun";
            btnRun.Size = new Size(36, 22);
            btnRun.Size = new Size(43, 24);
            btnRun.Text = "运行";
            btnRun.Click += btnRun_Click;
            // 
@@ -353,7 +360,7 @@
            // 
            btnLoadImage.ImageTransparentColor = Color.Magenta;
            btnLoadImage.Name = "btnLoadImage";
            btnLoadImage.Size = new Size(36, 22);
            btnLoadImage.Size = new Size(43, 24);
            btnLoadImage.Text = "导图";
            btnLoadImage.Click += btnLoadImage_Click;
            // 
@@ -361,7 +368,7 @@
            // 
            btnSaveParas.ImageTransparentColor = Color.Magenta;
            btnSaveParas.Name = "btnSaveParas";
            btnSaveParas.Size = new Size(36, 22);
            btnSaveParas.Size = new Size(43, 24);
            btnSaveParas.Text = "保存";
            btnSaveParas.Click += btnSaveParas_Click;
            // 
@@ -369,35 +376,37 @@
            // 
            btnLoadParas.ImageTransparentColor = Color.Magenta;
            btnLoadParas.Name = "btnLoadParas";
            btnLoadParas.Size = new Size(36, 22);
            btnLoadParas.Size = new Size(43, 24);
            btnLoadParas.Text = "加载";
            btnLoadParas.Click += btnLoadParas_Click;
            // 
            // BtmStatusStrip
            // 
            BtmStatusStrip.ImageScalingSize = new Size(20, 20);
            BtmStatusStrip.Items.AddRange(new ToolStripItem[] { lblResult, lblMsg, lblRunTime });
            BtmStatusStrip.Location = new Point(0, 577);
            BtmStatusStrip.Location = new Point(0, 679);
            BtmStatusStrip.Name = "BtmStatusStrip";
            BtmStatusStrip.Size = new Size(1044, 22);
            BtmStatusStrip.Padding = new Padding(1, 0, 18, 0);
            BtmStatusStrip.Size = new Size(1342, 26);
            BtmStatusStrip.TabIndex = 46;
            BtmStatusStrip.Text = "statusStrip1";
            // 
            // lblResult
            // 
            lblResult.Name = "lblResult";
            lblResult.Size = new Size(34, 17);
            lblResult.Size = new Size(42, 20);
            lblResult.Text = "True";
            // 
            // lblMsg
            // 
            lblMsg.Name = "lblMsg";
            lblMsg.Size = new Size(56, 17);
            lblMsg.Size = new Size(69, 20);
            lblMsg.Text = "运行成功";
            // 
            // lblRunTime
            // 
            lblRunTime.Name = "lblRunTime";
            lblRunTime.Size = new Size(32, 17);
            lblRunTime.Size = new Size(39, 20);
            lblRunTime.Text = "0ms";
            // 
            // MainTableLayoutPanel
@@ -408,11 +417,12 @@
            MainTableLayoutPanel.Controls.Add(parasTabControl, 0, 0);
            MainTableLayoutPanel.Controls.Add(imgTabControl, 1, 0);
            MainTableLayoutPanel.Dock = DockStyle.Fill;
            MainTableLayoutPanel.Location = new Point(0, 25);
            MainTableLayoutPanel.Location = new Point(0, 27);
            MainTableLayoutPanel.Margin = new Padding(4, 4, 4, 4);
            MainTableLayoutPanel.Name = "MainTableLayoutPanel";
            MainTableLayoutPanel.RowCount = 1;
            MainTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
            MainTableLayoutPanel.Size = new Size(1044, 552);
            MainTableLayoutPanel.Size = new Size(1342, 652);
            MainTableLayoutPanel.TabIndex = 47;
            // 
            // parasTabControl
@@ -421,19 +431,21 @@
            parasTabControl.Controls.Add(tabPage5);
            parasTabControl.Controls.Add(tabPage2);
            parasTabControl.Dock = DockStyle.Fill;
            parasTabControl.Location = new Point(3, 3);
            parasTabControl.Location = new Point(4, 4);
            parasTabControl.Margin = new Padding(4, 4, 4, 4);
            parasTabControl.Name = "parasTabControl";
            parasTabControl.SelectedIndex = 0;
            parasTabControl.Size = new Size(411, 546);
            parasTabControl.Size = new Size(528, 644);
            parasTabControl.TabIndex = 48;
            // 
            // tabPage1
            // 
            tabPage1.Controls.Add(tablePanelParas);
            tabPage1.Location = new Point(4, 26);
            tabPage1.Location = new Point(4, 29);
            tabPage1.Margin = new Padding(4, 4, 4, 4);
            tabPage1.Name = "tabPage1";
            tabPage1.Padding = new Padding(3);
            tabPage1.Size = new Size(403, 516);
            tabPage1.Padding = new Padding(4, 4, 4, 4);
            tabPage1.Size = new Size(520, 611);
            tabPage1.TabIndex = 0;
            tabPage1.Text = "输入参数";
            tabPage1.UseVisualStyleBackColor = true;
@@ -441,9 +453,10 @@
            // tabPage5
            // 
            tabPage5.Controls.Add(tableLayoutPanel2);
            tabPage5.Location = new Point(4, 26);
            tabPage5.Location = new Point(4, 29);
            tabPage5.Margin = new Padding(4, 4, 4, 4);
            tabPage5.Name = "tabPage5";
            tabPage5.Size = new Size(403, 516);
            tabPage5.Size = new Size(520, 611);
            tabPage5.TabIndex = 2;
            tabPage5.Text = "运行参数";
            tabPage5.UseVisualStyleBackColor = true;
@@ -451,36 +464,38 @@
            // tableLayoutPanel2
            // 
            tableLayoutPanel2.ColumnCount = 4;
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 60F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 150F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 20F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 77F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 193F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 26F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
            tableLayoutPanel2.Controls.Add(cmbTypeRoi, 1, 0);
            tableLayoutPanel2.Controls.Add(label21, 0, 0);
            tableLayoutPanel2.Controls.Add(label22, 0, 1);
            tableLayoutPanel2.Controls.Add(cmbFixture, 1, 1);
            tableLayoutPanel2.Controls.Add(ckbDrawRoi, 2, 0);
            tableLayoutPanel2.Location = new Point(3, 3);
            tableLayoutPanel2.Location = new Point(4, 4);
            tableLayoutPanel2.Margin = new Padding(4, 4, 4, 4);
            tableLayoutPanel2.Name = "tableLayoutPanel2";
            tableLayoutPanel2.RowCount = 8;
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
            tableLayoutPanel2.Size = new Size(323, 309);
            tableLayoutPanel2.Size = new Size(415, 364);
            tableLayoutPanel2.TabIndex = 4;
            // 
            // cmbTypeRoi
            // 
            cmbTypeRoi.Enabled = false;
            cmbTypeRoi.FormattingEnabled = true;
            cmbTypeRoi.Location = new Point(63, 3);
            cmbTypeRoi.Location = new Point(81, 4);
            cmbTypeRoi.Margin = new Padding(4, 4, 4, 4);
            cmbTypeRoi.Name = "cmbTypeRoi";
            cmbTypeRoi.Size = new Size(121, 25);
            cmbTypeRoi.Size = new Size(154, 28);
            cmbTypeRoi.TabIndex = 1;
            cmbTypeRoi.SelectedIndexChanged += cmbTypeRoi_SelectedIndexChanged;
            // 
@@ -488,9 +503,10 @@
            // 
            label21.AutoSize = true;
            label21.Dock = DockStyle.Fill;
            label21.Location = new Point(3, 0);
            label21.Location = new Point(4, 0);
            label21.Margin = new Padding(4, 0, 4, 0);
            label21.Name = "label21";
            label21.Size = new Size(54, 30);
            label21.Size = new Size(69, 35);
            label21.TabIndex = 3;
            label21.Text = "ROI";
            label21.TextAlign = ContentAlignment.MiddleCenter;
@@ -499,9 +515,10 @@
            // 
            label22.AutoSize = true;
            label22.Dock = DockStyle.Fill;
            label22.Location = new Point(3, 30);
            label22.Location = new Point(4, 35);
            label22.Margin = new Padding(4, 0, 4, 0);
            label22.Name = "label22";
            label22.Size = new Size(54, 30);
            label22.Size = new Size(69, 35);
            label22.TabIndex = 4;
            label22.Text = "Fixture";
            label22.TextAlign = ContentAlignment.MiddleCenter;
@@ -509,9 +526,10 @@
            // cmbFixture
            // 
            cmbFixture.FormattingEnabled = true;
            cmbFixture.Location = new Point(63, 33);
            cmbFixture.Location = new Point(81, 39);
            cmbFixture.Margin = new Padding(4, 4, 4, 4);
            cmbFixture.Name = "cmbFixture";
            cmbFixture.Size = new Size(121, 25);
            cmbFixture.Size = new Size(154, 28);
            cmbFixture.TabIndex = 5;
            cmbFixture.SelectedIndexChanged += cmbFixture_SelectedIndexChanged;
            // 
@@ -519,9 +537,10 @@
            // 
            ckbDrawRoi.AutoSize = true;
            ckbDrawRoi.CheckAlign = ContentAlignment.MiddleCenter;
            ckbDrawRoi.Location = new Point(213, 3);
            ckbDrawRoi.Location = new Point(274, 4);
            ckbDrawRoi.Margin = new Padding(4, 4, 4, 4);
            ckbDrawRoi.Name = "ckbDrawRoi";
            ckbDrawRoi.Size = new Size(14, 14);
            ckbDrawRoi.Size = new Size(18, 17);
            ckbDrawRoi.TabIndex = 2;
            ckbDrawRoi.UseVisualStyleBackColor = true;
            ckbDrawRoi.CheckedChanged += ckbDrawRoi_CheckedChanged;
@@ -529,10 +548,11 @@
            // tabPage2
            // 
            tabPage2.Controls.Add(tableLayoutResults);
            tabPage2.Location = new Point(4, 26);
            tabPage2.Location = new Point(4, 29);
            tabPage2.Margin = new Padding(4, 4, 4, 4);
            tabPage2.Name = "tabPage2";
            tabPage2.Padding = new Padding(3);
            tabPage2.Size = new Size(403, 516);
            tabPage2.Padding = new Padding(4, 4, 4, 4);
            tabPage2.Size = new Size(520, 611);
            tabPage2.TabIndex = 1;
            tabPage2.Text = "输出结果";
            tabPage2.UseVisualStyleBackColor = true;
@@ -540,7 +560,7 @@
            // tableLayoutResults
            // 
            tableLayoutResults.ColumnCount = 2;
            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 100F));
            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 129F));
            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
            tableLayoutResults.Controls.Add(dtxtHeight, 1, 4);
            tableLayoutResults.Controls.Add(label9, 0, 4);
@@ -555,8 +575,8 @@
            tableLayoutResults.Controls.Add(label18, 0, 5);
            tableLayoutResults.Controls.Add(dtxtCount, 1, 5);
            tableLayoutResults.Dock = DockStyle.Fill;
            tableLayoutResults.Location = new Point(3, 3);
            tableLayoutResults.Margin = new Padding(2, 3, 2, 3);
            tableLayoutResults.Location = new Point(4, 4);
            tableLayoutResults.Margin = new Padding(3, 4, 3, 4);
            tableLayoutResults.Name = "tableLayoutResults";
            tableLayoutResults.RowCount = 10;
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
@@ -569,29 +589,28 @@
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.Size = new Size(397, 510);
            tableLayoutResults.Size = new Size(512, 603);
            tableLayoutResults.TabIndex = 1;
            // 
            // dtxtHeight
            // 
            dtxtHeight.Dock = DockStyle.Fill;
            dtxtHeight.Location = new Point(102, 207);
            dtxtHeight.Margin = new Padding(2, 3, 2, 3);
            dtxtHeight.Location = new Point(132, 244);
            dtxtHeight.Margin = new Padding(3, 4, 3, 4);
            dtxtHeight.Name = "dtxtHeight";
            dtxtHeight.ReadOnly = true;
            dtxtHeight.Size = new Size(293, 23);
            dtxtHeight.Size = new Size(377, 27);
            dtxtHeight.TabIndex = 9;
            // 
            // label9
            // 
            label9.AutoSize = true;
            label9.Dock = DockStyle.Fill;
            label9.Location = new Point(2, 204);
            label9.Margin = new Padding(2, 0, 2, 0);
            label9.MaximumSize = new Size(0, 28);
            label9.MinimumSize = new Size(0, 28);
            label9.Location = new Point(3, 240);
            label9.MaximumSize = new Size(0, 33);
            label9.MinimumSize = new Size(0, 33);
            label9.Name = "label9";
            label9.Size = new Size(96, 28);
            label9.Size = new Size(123, 33);
            label9.TabIndex = 3;
            label9.Text = "高度";
            label9.TextAlign = ContentAlignment.TopCenter;
@@ -600,12 +619,11 @@
            // 
            label5.AutoSize = true;
            label5.Dock = DockStyle.Fill;
            label5.Location = new Point(2, 0);
            label5.Margin = new Padding(2, 0, 2, 0);
            label5.MaximumSize = new Size(0, 28);
            label5.MinimumSize = new Size(0, 28);
            label5.Location = new Point(3, 0);
            label5.MaximumSize = new Size(0, 33);
            label5.MinimumSize = new Size(0, 33);
            label5.Name = "label5";
            label5.Size = new Size(96, 28);
            label5.Size = new Size(123, 33);
            label5.TabIndex = 0;
            label5.Text = "X";
            label5.TextAlign = ContentAlignment.TopCenter;
@@ -614,12 +632,11 @@
            // 
            label6.AutoSize = true;
            label6.Dock = DockStyle.Fill;
            label6.Location = new Point(2, 51);
            label6.Margin = new Padding(2, 0, 2, 0);
            label6.MaximumSize = new Size(0, 28);
            label6.MinimumSize = new Size(0, 28);
            label6.Location = new Point(3, 60);
            label6.MaximumSize = new Size(0, 33);
            label6.MinimumSize = new Size(0, 33);
            label6.Name = "label6";
            label6.Size = new Size(96, 28);
            label6.Size = new Size(123, 33);
            label6.TabIndex = 1;
            label6.Text = "Y";
            label6.TextAlign = ContentAlignment.TopCenter;
@@ -628,12 +645,11 @@
            // 
            label7.AutoSize = true;
            label7.Dock = DockStyle.Fill;
            label7.Location = new Point(2, 102);
            label7.Margin = new Padding(2, 0, 2, 0);
            label7.MaximumSize = new Size(0, 28);
            label7.MinimumSize = new Size(0, 28);
            label7.Location = new Point(3, 120);
            label7.MaximumSize = new Size(0, 33);
            label7.MinimumSize = new Size(0, 33);
            label7.Name = "label7";
            label7.Size = new Size(96, 28);
            label7.Size = new Size(123, 33);
            label7.TabIndex = 2;
            label7.Text = "角度(°)";
            label7.TextAlign = ContentAlignment.TopCenter;
@@ -642,12 +658,11 @@
            // 
            label8.AutoSize = true;
            label8.Dock = DockStyle.Fill;
            label8.Location = new Point(2, 153);
            label8.Margin = new Padding(2, 0, 2, 0);
            label8.MaximumSize = new Size(0, 28);
            label8.MinimumSize = new Size(0, 28);
            label8.Location = new Point(3, 180);
            label8.MaximumSize = new Size(0, 33);
            label8.MinimumSize = new Size(0, 33);
            label8.Name = "label8";
            label8.Size = new Size(96, 28);
            label8.Size = new Size(123, 33);
            label8.TabIndex = 3;
            label8.Text = "宽度";
            label8.TextAlign = ContentAlignment.TopCenter;
@@ -655,50 +670,51 @@
            // dtxtCenterX
            // 
            dtxtCenterX.Dock = DockStyle.Fill;
            dtxtCenterX.Location = new Point(102, 3);
            dtxtCenterX.Margin = new Padding(2, 3, 2, 3);
            dtxtCenterX.Location = new Point(132, 4);
            dtxtCenterX.Margin = new Padding(3, 4, 3, 4);
            dtxtCenterX.Name = "dtxtCenterX";
            dtxtCenterX.ReadOnly = true;
            dtxtCenterX.Size = new Size(293, 23);
            dtxtCenterX.Size = new Size(377, 27);
            dtxtCenterX.TabIndex = 5;
            // 
            // dtxtCenterY
            // 
            dtxtCenterY.Dock = DockStyle.Fill;
            dtxtCenterY.Location = new Point(102, 54);
            dtxtCenterY.Margin = new Padding(2, 3, 2, 3);
            dtxtCenterY.Location = new Point(132, 64);
            dtxtCenterY.Margin = new Padding(3, 4, 3, 4);
            dtxtCenterY.Name = "dtxtCenterY";
            dtxtCenterY.ReadOnly = true;
            dtxtCenterY.Size = new Size(293, 23);
            dtxtCenterY.Size = new Size(377, 27);
            dtxtCenterY.TabIndex = 6;
            // 
            // dtxtAngle
            // 
            dtxtAngle.Dock = DockStyle.Fill;
            dtxtAngle.Location = new Point(102, 105);
            dtxtAngle.Margin = new Padding(2, 3, 2, 3);
            dtxtAngle.Location = new Point(132, 124);
            dtxtAngle.Margin = new Padding(3, 4, 3, 4);
            dtxtAngle.Name = "dtxtAngle";
            dtxtAngle.ReadOnly = true;
            dtxtAngle.Size = new Size(293, 23);
            dtxtAngle.Size = new Size(377, 27);
            dtxtAngle.TabIndex = 7;
            // 
            // dtxtWidth
            // 
            dtxtWidth.Dock = DockStyle.Fill;
            dtxtWidth.Location = new Point(102, 156);
            dtxtWidth.Margin = new Padding(2, 3, 2, 3);
            dtxtWidth.Location = new Point(132, 184);
            dtxtWidth.Margin = new Padding(3, 4, 3, 4);
            dtxtWidth.Name = "dtxtWidth";
            dtxtWidth.ReadOnly = true;
            dtxtWidth.Size = new Size(293, 23);
            dtxtWidth.Size = new Size(377, 27);
            dtxtWidth.TabIndex = 8;
            // 
            // label18
            // 
            label18.AutoSize = true;
            label18.Dock = DockStyle.Fill;
            label18.Location = new Point(3, 255);
            label18.Location = new Point(4, 300);
            label18.Margin = new Padding(4, 0, 4, 0);
            label18.Name = "label18";
            label18.Size = new Size(94, 51);
            label18.Size = new Size(121, 60);
            label18.TabIndex = 10;
            label18.Text = "数量";
            label18.TextAlign = ContentAlignment.TopCenter;
@@ -706,10 +722,11 @@
            // dtxtCount
            // 
            dtxtCount.Dock = DockStyle.Fill;
            dtxtCount.Location = new Point(103, 258);
            dtxtCount.Location = new Point(133, 304);
            dtxtCount.Margin = new Padding(4, 4, 4, 4);
            dtxtCount.Name = "dtxtCount";
            dtxtCount.ReadOnly = true;
            dtxtCount.Size = new Size(291, 23);
            dtxtCount.Size = new Size(375, 27);
            dtxtCount.TabIndex = 11;
            // 
            // imgTabControl
@@ -717,19 +734,21 @@
            imgTabControl.Controls.Add(tabPageInputImage);
            imgTabControl.Controls.Add(tabPageRecordImage);
            imgTabControl.Dock = DockStyle.Fill;
            imgTabControl.Location = new Point(420, 3);
            imgTabControl.Location = new Point(540, 4);
            imgTabControl.Margin = new Padding(4, 4, 4, 4);
            imgTabControl.Name = "imgTabControl";
            imgTabControl.SelectedIndex = 0;
            imgTabControl.Size = new Size(621, 546);
            imgTabControl.Size = new Size(798, 644);
            imgTabControl.TabIndex = 49;
            // 
            // tabPageInputImage
            // 
            tabPageInputImage.Controls.Add(pnlInputImage);
            tabPageInputImage.Location = new Point(4, 26);
            tabPageInputImage.Location = new Point(4, 29);
            tabPageInputImage.Margin = new Padding(4, 4, 4, 4);
            tabPageInputImage.Name = "tabPageInputImage";
            tabPageInputImage.Padding = new Padding(3);
            tabPageInputImage.Size = new Size(613, 516);
            tabPageInputImage.Padding = new Padding(4, 4, 4, 4);
            tabPageInputImage.Size = new Size(790, 611);
            tabPageInputImage.TabIndex = 0;
            tabPageInputImage.Text = "输入图像";
            tabPageInputImage.UseVisualStyleBackColor = true;
@@ -737,10 +756,11 @@
            // tabPageRecordImage
            // 
            tabPageRecordImage.Controls.Add(pnlRecordImage);
            tabPageRecordImage.Location = new Point(4, 26);
            tabPageRecordImage.Location = new Point(4, 29);
            tabPageRecordImage.Margin = new Padding(4, 4, 4, 4);
            tabPageRecordImage.Name = "tabPageRecordImage";
            tabPageRecordImage.Padding = new Padding(3);
            tabPageRecordImage.Size = new Size(613, 516);
            tabPageRecordImage.Padding = new Padding(4, 4, 4, 4);
            tabPageRecordImage.Size = new Size(790, 609);
            tabPageRecordImage.TabIndex = 1;
            tabPageRecordImage.Text = "结果图像";
            tabPageRecordImage.UseVisualStyleBackColor = true;
@@ -748,33 +768,22 @@
            // pnlRecordImage
            // 
            pnlRecordImage.Dock = DockStyle.Fill;
            pnlRecordImage.Location = new Point(3, 3);
            pnlRecordImage.Margin = new Padding(4);
            pnlRecordImage.Location = new Point(4, 4);
            pnlRecordImage.Margin = new Padding(5, 5, 5, 5);
            pnlRecordImage.Name = "pnlRecordImage";
            pnlRecordImage.Size = new Size(607, 510);
            pnlRecordImage.Size = new Size(782, 601);
            pnlRecordImage.TabIndex = 45;
            //
            // btnShowROI
            //
            btnShowROI.Dock = DockStyle.Fill;
            btnShowROI.Location = new Point(3, 207);
            btnShowROI.Name = "btnShowROI";
            btnShowROI.Size = new Size(84, 45);
            btnShowROI.TabIndex = 15;
            btnShowROI.Text = "显示找线区域";
            btnShowROI.UseVisualStyleBackColor = true;
            btnShowROI.Click += btnShowROI_Click;
            // 
            // HFindLineToolEdit
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleDimensions = new SizeF(9F, 20F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(MainTableLayoutPanel);
            Controls.Add(BtmStatusStrip);
            Controls.Add(TopToolStrip);
            Margin = new Padding(2, 3, 2, 3);
            Margin = new Padding(3, 4, 3, 4);
            Name = "HFindLineToolEdit";
            Size = new Size(1044, 599);
            Size = new Size(1342, 705);
            Load += HFindLineToolEdit_Load;
            tablePanelParas.ResumeLayout(false);
            tablePanelParas.PerformLayout();
LB_VisionProcesses/Alogrithms/Halcon/2D/HFindLineTool/HFindLineToolEdit.resx
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Microsoft ResX Schema
    Version 2.0
@@ -48,7 +48,7 @@
    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
@@ -117,10 +117,13 @@
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="TopToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
  <metadata name="lblMsgToolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="TopToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>183, 17</value>
  </metadata>
  <metadata name="BtmStatusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>129, 17</value>
    <value>340, 17</value>
  </metadata>
</root>
LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementTool.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,180 @@
using HalconDotNet;
using LB_VisionControl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace LB_VisionProcesses.Alogrithms.Halcon._2D.HEdgeExtraction
{
    public enum ImageEnhancementType { Emphasize, EquHisto, ScaleMax }
    [Process("Halcon图像增强", Category = "Halcon2D工具", Description = "创建图像增强工具")]
    internal class HImageEnhancementTool : TAlgorithm
    {
        public HImageEnhancementTool()
        {
            strProcessClass = "LB_VisionProcesses.Alogrithms.Halcon.HImageEnhancementTool";
            strProcessName = "Halcon图像增强工具";
            Params.Inputs.Add("滤波器类型", "边缘增强");
            Params.Inputs.Add("掩膜宽", 2.0);
            Params.Inputs.Add("掩膜高", 10);
            Params.Inputs.Add("增强因子", 20);
            //emphasize(Image : ImageEmphasize : MaskWidth, MaskHeight, Factor : )
            Params.Inputs.Add("滤波器类型", "直方图均衡化");
            //equ_histo_image(Image : ImageEquHisto : : )
            Params.Inputs.Add("滤波器类型", "比例增强");
            //scale_image_max(Image : ImageScaleMax : : )
            Params.ROI = new HSegment(0, 0, 250, 250);
        }
        /// <summary>
        /// ç®—子逻辑
        /// </summary>
        public override void TAlgorithmMain()
        {
            #region åˆå§‹åŒ–变量
            HObject ho_Regions, ho_LineXld;
            HOperatorSet.GenEmptyObj(out ho_Regions);
            HOperatorSet.GenEmptyObj(out ho_LineXld);
            #endregion
            try
            {
                if (InputImage == null)
                {
                    Msg = "输入图片为空";
                    Result = false;
                    return;
                }
                #region è£å‰ªåŒºåŸŸ
                if (!(Params.ROI is HSegment))
                {
                    Msg = "ROI类型错误,必须为HSegment类型";
                    Result = false;
                    return;
                }
                if (!(InputImage is HObject))
                {
                    Msg = "输入图片类型错误,必须为HObject类型";
                    Result = false;
                    return;
                }
                HObject DomainImage = ((HObject)InputImage)?.CopyObj(1, -1);
                #endregion
                #region ç®—子逻辑
                Record = new ObjectRecord();
                HObject hoDomainImage = DomainImage as HObject;
                HTuple hv_Channels = new HTuple();
                //判断是否为灰度图
                using (HDevDisposeHelper dh = new HDevDisposeHelper())
                {
                    try
                    {
                        HOperatorSet.CountChannels(hoDomainImage, out hv_Channels);
                        if (hv_Channels.TupleInt() != 1)
                            HOperatorSet.Rgb1ToGray(hoDomainImage, out hoDomainImage);
                        //转换后再次检查是否为灰度图
                        HOperatorSet.CountChannels(hoDomainImage, out hv_Channels);
                        if (hv_Channels.TupleInt() != 1)
                        {
                            HOperatorSet.Rgb1ToGray(hoDomainImage, out hoDomainImage);
                            Msg = "输入图片不为灰度图";
                            Result = false;
                            return;
                        }
                    }
                    catch
                    {
                        Msg = "输入图片不为灰度图且转换失败";
                        Result = false;
                        return;
                    }
                }
                int hv_MaskWidth = Convert.ToInt16(Params.Inputs["掩膜宽"]);
                int hv_MaskHight = Convert.ToInt16(Params.Inputs["掩膜高"]);
                double hv_Factor = Convert.ToDouble(Params.Inputs["增强因子"]);
                Enum.TryParse(Params.Inputs["图像增强类型"]?.ToString(), out ImageEnhancementType imageEnhancementType);
                string hv_ImageEnhancementType = "scaleMax";
                switch (imageEnhancementType)
                {
                    case ImageEnhancementType.Emphasize:
                        hv_ImageEnhancementType = "emphasize";
                        break;
                    case ImageEnhancementType.EquHisto:
                        hv_ImageEnhancementType = "equHisto";
                        break;
                    case ImageEnhancementType.ScaleMax:
                    default:
                        hv_ImageEnhancementType = "scaleMax";
                        break;
                }
                double hv_Row1 = Convert.ToDouble(((HSegment)Params.ROI).BeginRow + Params.Fixture.Row);
                double hv_Column1 = Convert.ToDouble(((HSegment)Params.ROI).BeginColumn + Params.Fixture.Column);
                double hv_Row2 = Convert.ToDouble(((HSegment)Params.ROI).EndRow + Params.Fixture.Row);
                double hv_Column2 = Convert.ToDouble(((HSegment)Params.ROI).EndColumn + Params.Fixture.Column);
                Emphsize(hoDomainImage, out ho_Regions, hv_Column1, hv_Row2, hv_Column2);
                #endregion
                #region ç”ŸæˆOutputImage给后续处理
                try
                {
                    OutputImage = hoDomainImage;
                }
                catch (Exception ex)
                {
                    Msg = "生成OutputImage失败,原因是:" + ex.ToString();
                    Result = false;
                    return;
                }
                #endregion
                if (Msg == "运行超时")
                {
                    Result = false;
                    return;
                }
                Msg = "运行成功";
                Result = true;
                return;
            }
            catch (Exception ex)
            {
                Msg = "运行失败,原因是:" + ex.ToString().TrimEnd();
                OutputImage = null;
                Result = false;
                return;
            }
            finally
            {
                if (!Result)
                {
                    Params.Outputs.Add("Segment", new HSegment());
                }
                bCompleted = true;
                #region å†…存释放
                ho_Regions.Dispose();
                #endregion
            }
        }
    }
}
LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,683 @@
using LB_VisionProcesses.Alogrithms;
namespace LB_VisionProcesses.Alogrithms.Halcon._2D.HEdgeExtractionTool
{
    partial class HImageEnhancementToolEdit
    {
        /// <summary>
        /// å¿…需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// æ¸…理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region ç»„件设计器生成的代码
        /// <summary>
        /// è®¾è®¡å™¨æ”¯æŒæ‰€éœ€çš„æ–¹æ³• - ä¸è¦ä¿®æ”¹
        /// ä½¿ç”¨ä»£ç ç¼–辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            pnlInputImage = new Panel();
            TopToolStrip = new ToolStrip();
            btnRun = new ToolStripButton();
            btnLoadImage = new ToolStripButton();
            btnSaveParas = new ToolStripButton();
            btnLoadParas = new ToolStripButton();
            BtmStatusStrip = new StatusStrip();
            lblResult = new ToolStripStatusLabel();
            lblMsg = new ToolStripStatusLabel();
            lblRunTime = new ToolStripStatusLabel();
            MainTableLayoutPanel = new TableLayoutPanel();
            parasTabControl = new TabControl();
            tabPage1 = new TabPage();
            tabPage5 = new TabPage();
            tableLayoutPanel2 = new TableLayoutPanel();
            cmbTypeRoi = new ComboBox();
            label21 = new Label();
            label22 = new Label();
            cmbFixture = new ComboBox();
            ckbDrawRoi = new CheckBox();
            tabPage2 = new TabPage();
            tableLayoutResults = new TableLayoutPanel();
            dtxtHeight = new TextBox();
            label9 = new Label();
            label5 = new Label();
            label6 = new Label();
            label7 = new Label();
            label8 = new Label();
            dtxtCenterX = new TextBox();
            dtxtCenterY = new TextBox();
            dtxtAngle = new TextBox();
            dtxtWidth = new TextBox();
            label18 = new Label();
            dtxtCount = new TextBox();
            imgTabControl = new TabControl();
            tabPageInputImage = new TabPage();
            tabPageRecordImage = new TabPage();
            pnlRecordImage = new Panel();
            tableLayoutPanel1 = new TableLayoutPanel();
            tableLayoutPanel3 = new TableLayoutPanel();
            label14 = new Label();
            cmbImageEnhancement = new ComboBox();
            button1 = new Button();
            dataGridView1 = new DataGridView();
            TopToolStrip.SuspendLayout();
            BtmStatusStrip.SuspendLayout();
            MainTableLayoutPanel.SuspendLayout();
            parasTabControl.SuspendLayout();
            tabPage1.SuspendLayout();
            tabPage5.SuspendLayout();
            tableLayoutPanel2.SuspendLayout();
            tabPage2.SuspendLayout();
            tableLayoutResults.SuspendLayout();
            imgTabControl.SuspendLayout();
            tabPageInputImage.SuspendLayout();
            tabPageRecordImage.SuspendLayout();
            tableLayoutPanel1.SuspendLayout();
            tableLayoutPanel3.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit();
            SuspendLayout();
            //
            // pnlInputImage
            //
            pnlInputImage.Dock = DockStyle.Fill;
            pnlInputImage.Location = new Point(4, 4);
            pnlInputImage.Margin = new Padding(5);
            pnlInputImage.Name = "pnlInputImage";
            pnlInputImage.Size = new Size(782, 603);
            pnlInputImage.TabIndex = 44;
            //
            // TopToolStrip
            //
            TopToolStrip.ImageScalingSize = new Size(20, 20);
            TopToolStrip.Items.AddRange(new ToolStripItem[] { btnRun, btnLoadImage, btnSaveParas, btnLoadParas });
            TopToolStrip.Location = new Point(0, 0);
            TopToolStrip.Name = "TopToolStrip";
            TopToolStrip.Size = new Size(1342, 27);
            TopToolStrip.TabIndex = 45;
            TopToolStrip.Text = "toolStrip1";
            //
            // btnRun
            //
            btnRun.BackgroundImageLayout = ImageLayout.Zoom;
            btnRun.ImageTransparentColor = Color.Magenta;
            btnRun.Name = "btnRun";
            btnRun.Size = new Size(43, 24);
            btnRun.Text = "运行";
            //
            // btnLoadImage
            //
            btnLoadImage.ImageTransparentColor = Color.Magenta;
            btnLoadImage.Name = "btnLoadImage";
            btnLoadImage.Size = new Size(43, 24);
            btnLoadImage.Text = "导图";
            //
            // btnSaveParas
            //
            btnSaveParas.ImageTransparentColor = Color.Magenta;
            btnSaveParas.Name = "btnSaveParas";
            btnSaveParas.Size = new Size(43, 24);
            btnSaveParas.Text = "保存";
            //
            // btnLoadParas
            //
            btnLoadParas.ImageTransparentColor = Color.Magenta;
            btnLoadParas.Name = "btnLoadParas";
            btnLoadParas.Size = new Size(43, 24);
            btnLoadParas.Text = "加载";
            //
            // BtmStatusStrip
            //
            BtmStatusStrip.ImageScalingSize = new Size(20, 20);
            BtmStatusStrip.Items.AddRange(new ToolStripItem[] { lblResult, lblMsg, lblRunTime });
            BtmStatusStrip.Location = new Point(0, 679);
            BtmStatusStrip.Name = "BtmStatusStrip";
            BtmStatusStrip.Padding = new Padding(1, 0, 18, 0);
            BtmStatusStrip.Size = new Size(1342, 26);
            BtmStatusStrip.TabIndex = 46;
            BtmStatusStrip.Text = "statusStrip1";
            //
            // lblResult
            //
            lblResult.Name = "lblResult";
            lblResult.Size = new Size(42, 20);
            lblResult.Text = "True";
            //
            // lblMsg
            //
            lblMsg.Name = "lblMsg";
            lblMsg.Size = new Size(69, 20);
            lblMsg.Text = "运行成功";
            //
            // lblRunTime
            //
            lblRunTime.Name = "lblRunTime";
            lblRunTime.Size = new Size(39, 20);
            lblRunTime.Text = "0ms";
            //
            // MainTableLayoutPanel
            //
            MainTableLayoutPanel.ColumnCount = 2;
            MainTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
            MainTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 60F));
            MainTableLayoutPanel.Controls.Add(parasTabControl, 0, 0);
            MainTableLayoutPanel.Controls.Add(imgTabControl, 1, 0);
            MainTableLayoutPanel.Dock = DockStyle.Fill;
            MainTableLayoutPanel.Location = new Point(0, 27);
            MainTableLayoutPanel.Margin = new Padding(4);
            MainTableLayoutPanel.Name = "MainTableLayoutPanel";
            MainTableLayoutPanel.RowCount = 1;
            MainTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
            MainTableLayoutPanel.Size = new Size(1342, 652);
            MainTableLayoutPanel.TabIndex = 47;
            //
            // parasTabControl
            //
            parasTabControl.Controls.Add(tabPage1);
            parasTabControl.Controls.Add(tabPage5);
            parasTabControl.Controls.Add(tabPage2);
            parasTabControl.Dock = DockStyle.Fill;
            parasTabControl.Location = new Point(4, 4);
            parasTabControl.Margin = new Padding(4);
            parasTabControl.Name = "parasTabControl";
            parasTabControl.SelectedIndex = 0;
            parasTabControl.Size = new Size(528, 644);
            parasTabControl.TabIndex = 48;
            //
            // tabPage1
            //
            tabPage1.Controls.Add(tableLayoutPanel1);
            tabPage1.Location = new Point(4, 29);
            tabPage1.Margin = new Padding(4);
            tabPage1.Name = "tabPage1";
            tabPage1.Padding = new Padding(4);
            tabPage1.Size = new Size(520, 611);
            tabPage1.TabIndex = 0;
            tabPage1.Text = "输入参数";
            tabPage1.UseVisualStyleBackColor = true;
            //
            // tabPage5
            //
            tabPage5.Controls.Add(tableLayoutPanel2);
            tabPage5.Location = new Point(4, 29);
            tabPage5.Margin = new Padding(4);
            tabPage5.Name = "tabPage5";
            tabPage5.Size = new Size(520, 611);
            tabPage5.TabIndex = 2;
            tabPage5.Text = "运行参数";
            tabPage5.UseVisualStyleBackColor = true;
            //
            // tableLayoutPanel2
            //
            tableLayoutPanel2.ColumnCount = 4;
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 77F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 193F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 26F));
            tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
            tableLayoutPanel2.Controls.Add(cmbTypeRoi, 1, 0);
            tableLayoutPanel2.Controls.Add(label21, 0, 0);
            tableLayoutPanel2.Controls.Add(label22, 0, 1);
            tableLayoutPanel2.Controls.Add(cmbFixture, 1, 1);
            tableLayoutPanel2.Controls.Add(ckbDrawRoi, 2, 0);
            tableLayoutPanel2.Location = new Point(4, 4);
            tableLayoutPanel2.Margin = new Padding(4);
            tableLayoutPanel2.Name = "tableLayoutPanel2";
            tableLayoutPanel2.RowCount = 8;
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
            tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
            tableLayoutPanel2.Size = new Size(415, 364);
            tableLayoutPanel2.TabIndex = 4;
            //
            // cmbTypeRoi
            //
            cmbTypeRoi.Enabled = false;
            cmbTypeRoi.FormattingEnabled = true;
            cmbTypeRoi.Location = new Point(81, 4);
            cmbTypeRoi.Margin = new Padding(4);
            cmbTypeRoi.Name = "cmbTypeRoi";
            cmbTypeRoi.Size = new Size(154, 28);
            cmbTypeRoi.TabIndex = 1;
            //
            // label21
            //
            label21.AutoSize = true;
            label21.Dock = DockStyle.Fill;
            label21.Location = new Point(4, 0);
            label21.Margin = new Padding(4, 0, 4, 0);
            label21.Name = "label21";
            label21.Size = new Size(69, 35);
            label21.TabIndex = 3;
            label21.Text = "ROI";
            label21.TextAlign = ContentAlignment.MiddleCenter;
            //
            // label22
            //
            label22.AutoSize = true;
            label22.Dock = DockStyle.Fill;
            label22.Location = new Point(4, 35);
            label22.Margin = new Padding(4, 0, 4, 0);
            label22.Name = "label22";
            label22.Size = new Size(69, 35);
            label22.TabIndex = 4;
            label22.Text = "Fixture";
            label22.TextAlign = ContentAlignment.MiddleCenter;
            //
            // cmbFixture
            //
            cmbFixture.FormattingEnabled = true;
            cmbFixture.Location = new Point(81, 39);
            cmbFixture.Margin = new Padding(4);
            cmbFixture.Name = "cmbFixture";
            cmbFixture.Size = new Size(154, 28);
            cmbFixture.TabIndex = 5;
            //
            // ckbDrawRoi
            //
            ckbDrawRoi.AutoSize = true;
            ckbDrawRoi.CheckAlign = ContentAlignment.MiddleCenter;
            ckbDrawRoi.Location = new Point(274, 4);
            ckbDrawRoi.Margin = new Padding(4);
            ckbDrawRoi.Name = "ckbDrawRoi";
            ckbDrawRoi.Size = new Size(18, 17);
            ckbDrawRoi.TabIndex = 2;
            ckbDrawRoi.UseVisualStyleBackColor = true;
            //
            // tabPage2
            //
            tabPage2.Controls.Add(tableLayoutResults);
            tabPage2.Location = new Point(4, 29);
            tabPage2.Margin = new Padding(4);
            tabPage2.Name = "tabPage2";
            tabPage2.Padding = new Padding(4);
            tabPage2.Size = new Size(520, 611);
            tabPage2.TabIndex = 1;
            tabPage2.Text = "输出结果";
            tabPage2.UseVisualStyleBackColor = true;
            //
            // tableLayoutResults
            //
            tableLayoutResults.ColumnCount = 2;
            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 129F));
            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
            tableLayoutResults.Controls.Add(dtxtHeight, 1, 4);
            tableLayoutResults.Controls.Add(label9, 0, 4);
            tableLayoutResults.Controls.Add(label5, 0, 0);
            tableLayoutResults.Controls.Add(label6, 0, 1);
            tableLayoutResults.Controls.Add(label7, 0, 2);
            tableLayoutResults.Controls.Add(label8, 0, 3);
            tableLayoutResults.Controls.Add(dtxtCenterX, 1, 0);
            tableLayoutResults.Controls.Add(dtxtCenterY, 1, 1);
            tableLayoutResults.Controls.Add(dtxtAngle, 1, 2);
            tableLayoutResults.Controls.Add(dtxtWidth, 1, 3);
            tableLayoutResults.Controls.Add(label18, 0, 5);
            tableLayoutResults.Controls.Add(dtxtCount, 1, 5);
            tableLayoutResults.Dock = DockStyle.Fill;
            tableLayoutResults.Location = new Point(4, 4);
            tableLayoutResults.Margin = new Padding(3, 4, 3, 4);
            tableLayoutResults.Name = "tableLayoutResults";
            tableLayoutResults.RowCount = 10;
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
            tableLayoutResults.Size = new Size(512, 603);
            tableLayoutResults.TabIndex = 1;
            //
            // dtxtHeight
            //
            dtxtHeight.Dock = DockStyle.Fill;
            dtxtHeight.Location = new Point(132, 244);
            dtxtHeight.Margin = new Padding(3, 4, 3, 4);
            dtxtHeight.Name = "dtxtHeight";
            dtxtHeight.ReadOnly = true;
            dtxtHeight.Size = new Size(377, 27);
            dtxtHeight.TabIndex = 9;
            //
            // label9
            //
            label9.AutoSize = true;
            label9.Dock = DockStyle.Fill;
            label9.Location = new Point(3, 240);
            label9.MaximumSize = new Size(0, 33);
            label9.MinimumSize = new Size(0, 33);
            label9.Name = "label9";
            label9.Size = new Size(123, 33);
            label9.TabIndex = 3;
            label9.Text = "高度";
            label9.TextAlign = ContentAlignment.TopCenter;
            //
            // label5
            //
            label5.AutoSize = true;
            label5.Dock = DockStyle.Fill;
            label5.Location = new Point(3, 0);
            label5.MaximumSize = new Size(0, 33);
            label5.MinimumSize = new Size(0, 33);
            label5.Name = "label5";
            label5.Size = new Size(123, 33);
            label5.TabIndex = 0;
            label5.Text = "X";
            label5.TextAlign = ContentAlignment.TopCenter;
            //
            // label6
            //
            label6.AutoSize = true;
            label6.Dock = DockStyle.Fill;
            label6.Location = new Point(3, 60);
            label6.MaximumSize = new Size(0, 33);
            label6.MinimumSize = new Size(0, 33);
            label6.Name = "label6";
            label6.Size = new Size(123, 33);
            label6.TabIndex = 1;
            label6.Text = "Y";
            label6.TextAlign = ContentAlignment.TopCenter;
            //
            // label7
            //
            label7.AutoSize = true;
            label7.Dock = DockStyle.Fill;
            label7.Location = new Point(3, 120);
            label7.MaximumSize = new Size(0, 33);
            label7.MinimumSize = new Size(0, 33);
            label7.Name = "label7";
            label7.Size = new Size(123, 33);
            label7.TabIndex = 2;
            label7.Text = "角度(°)";
            label7.TextAlign = ContentAlignment.TopCenter;
            //
            // label8
            //
            label8.AutoSize = true;
            label8.Dock = DockStyle.Fill;
            label8.Location = new Point(3, 180);
            label8.MaximumSize = new Size(0, 33);
            label8.MinimumSize = new Size(0, 33);
            label8.Name = "label8";
            label8.Size = new Size(123, 33);
            label8.TabIndex = 3;
            label8.Text = "宽度";
            label8.TextAlign = ContentAlignment.TopCenter;
            //
            // dtxtCenterX
            //
            dtxtCenterX.Dock = DockStyle.Fill;
            dtxtCenterX.Location = new Point(132, 4);
            dtxtCenterX.Margin = new Padding(3, 4, 3, 4);
            dtxtCenterX.Name = "dtxtCenterX";
            dtxtCenterX.ReadOnly = true;
            dtxtCenterX.Size = new Size(377, 27);
            dtxtCenterX.TabIndex = 5;
            //
            // dtxtCenterY
            //
            dtxtCenterY.Dock = DockStyle.Fill;
            dtxtCenterY.Location = new Point(132, 64);
            dtxtCenterY.Margin = new Padding(3, 4, 3, 4);
            dtxtCenterY.Name = "dtxtCenterY";
            dtxtCenterY.ReadOnly = true;
            dtxtCenterY.Size = new Size(377, 27);
            dtxtCenterY.TabIndex = 6;
            //
            // dtxtAngle
            //
            dtxtAngle.Dock = DockStyle.Fill;
            dtxtAngle.Location = new Point(132, 124);
            dtxtAngle.Margin = new Padding(3, 4, 3, 4);
            dtxtAngle.Name = "dtxtAngle";
            dtxtAngle.ReadOnly = true;
            dtxtAngle.Size = new Size(377, 27);
            dtxtAngle.TabIndex = 7;
            //
            // dtxtWidth
            //
            dtxtWidth.Dock = DockStyle.Fill;
            dtxtWidth.Location = new Point(132, 184);
            dtxtWidth.Margin = new Padding(3, 4, 3, 4);
            dtxtWidth.Name = "dtxtWidth";
            dtxtWidth.ReadOnly = true;
            dtxtWidth.Size = new Size(377, 27);
            dtxtWidth.TabIndex = 8;
            //
            // label18
            //
            label18.AutoSize = true;
            label18.Dock = DockStyle.Fill;
            label18.Location = new Point(4, 300);
            label18.Margin = new Padding(4, 0, 4, 0);
            label18.Name = "label18";
            label18.Size = new Size(121, 60);
            label18.TabIndex = 10;
            label18.Text = "数量";
            label18.TextAlign = ContentAlignment.TopCenter;
            //
            // dtxtCount
            //
            dtxtCount.Dock = DockStyle.Fill;
            dtxtCount.Location = new Point(133, 304);
            dtxtCount.Margin = new Padding(4);
            dtxtCount.Name = "dtxtCount";
            dtxtCount.ReadOnly = true;
            dtxtCount.Size = new Size(375, 27);
            dtxtCount.TabIndex = 11;
            //
            // imgTabControl
            //
            imgTabControl.Controls.Add(tabPageInputImage);
            imgTabControl.Controls.Add(tabPageRecordImage);
            imgTabControl.Dock = DockStyle.Fill;
            imgTabControl.Location = new Point(540, 4);
            imgTabControl.Margin = new Padding(4);
            imgTabControl.Name = "imgTabControl";
            imgTabControl.SelectedIndex = 0;
            imgTabControl.Size = new Size(798, 644);
            imgTabControl.TabIndex = 49;
            //
            // tabPageInputImage
            //
            tabPageInputImage.Controls.Add(pnlInputImage);
            tabPageInputImage.Location = new Point(4, 29);
            tabPageInputImage.Margin = new Padding(4);
            tabPageInputImage.Name = "tabPageInputImage";
            tabPageInputImage.Padding = new Padding(4);
            tabPageInputImage.Size = new Size(790, 611);
            tabPageInputImage.TabIndex = 0;
            tabPageInputImage.Text = "输入图像";
            tabPageInputImage.UseVisualStyleBackColor = true;
            //
            // tabPageRecordImage
            //
            tabPageRecordImage.Controls.Add(pnlRecordImage);
            tabPageRecordImage.Location = new Point(4, 29);
            tabPageRecordImage.Margin = new Padding(4);
            tabPageRecordImage.Name = "tabPageRecordImage";
            tabPageRecordImage.Padding = new Padding(4);
            tabPageRecordImage.Size = new Size(790, 611);
            tabPageRecordImage.TabIndex = 1;
            tabPageRecordImage.Text = "结果图像";
            tabPageRecordImage.UseVisualStyleBackColor = true;
            //
            // pnlRecordImage
            //
            pnlRecordImage.Dock = DockStyle.Fill;
            pnlRecordImage.Location = new Point(4, 4);
            pnlRecordImage.Margin = new Padding(5);
            pnlRecordImage.Name = "pnlRecordImage";
            pnlRecordImage.Size = new Size(782, 603);
            pnlRecordImage.TabIndex = 45;
            //
            // tableLayoutPanel1
            //
            tableLayoutPanel1.ColumnCount = 1;
            tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
            tableLayoutPanel1.Controls.Add(tableLayoutPanel3, 0, 0);
            tableLayoutPanel1.Controls.Add(dataGridView1, 0, 1);
            tableLayoutPanel1.Dock = DockStyle.Fill;
            tableLayoutPanel1.Location = new Point(4, 4);
            tableLayoutPanel1.Name = "tableLayoutPanel1";
            tableLayoutPanel1.RowCount = 2;
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 10.2819233F));
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 89.71808F));
            tableLayoutPanel1.Size = new Size(512, 603);
            tableLayoutPanel1.TabIndex = 1;
            //
            // tableLayoutPanel3
            //
            tableLayoutPanel3.ColumnCount = 3;
            tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 31.5363884F));
            tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 68.4636154F));
            tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 136F));
            tableLayoutPanel3.Controls.Add(cmbImageEnhancement, 1, 0);
            tableLayoutPanel3.Controls.Add(label14, 0, 0);
            tableLayoutPanel3.Controls.Add(button1, 2, 0);
            tableLayoutPanel3.Location = new Point(3, 3);
            tableLayoutPanel3.Name = "tableLayoutPanel3";
            tableLayoutPanel3.RowCount = 1;
            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
            tableLayoutPanel3.Size = new Size(506, 54);
            tableLayoutPanel3.TabIndex = 1;
            //
            // label14
            //
            label14.AutoSize = true;
            label14.Location = new Point(3, 0);
            label14.MaximumSize = new Size(0, 33);
            label14.MinimumSize = new Size(0, 33);
            label14.Name = "label14";
            label14.Size = new Size(69, 33);
            label14.TabIndex = 1;
            label14.Text = "滤波类型";
            label14.TextAlign = ContentAlignment.MiddleCenter;
            //
            // cmbImageEnhancement
            //
            cmbImageEnhancement.FormattingEnabled = true;
            cmbImageEnhancement.Location = new Point(120, 4);
            cmbImageEnhancement.Margin = new Padding(4);
            cmbImageEnhancement.Name = "cmbImageEnhancement";
            cmbImageEnhancement.Size = new Size(129, 28);
            cmbImageEnhancement.TabIndex = 14;
            //
            // button1
            //
            button1.Location = new Point(372, 3);
            button1.Name = "button1";
            button1.Size = new Size(131, 48);
            button1.TabIndex = 15;
            button1.Text = "添加";
            button1.UseVisualStyleBackColor = true;
            //
            // dataGridView1
            //
            dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            dataGridView1.Location = new Point(3, 64);
            dataGridView1.Name = "dataGridView1";
            dataGridView1.RowHeadersWidth = 51;
            dataGridView1.Size = new Size(506, 536);
            dataGridView1.TabIndex = 2;
            //
            // HImageEnhancementToolEdit
            //
            AutoScaleDimensions = new SizeF(9F, 20F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(MainTableLayoutPanel);
            Controls.Add(BtmStatusStrip);
            Controls.Add(TopToolStrip);
            Margin = new Padding(3, 4, 3, 4);
            Name = "HImageEnhancementToolEdit";
            Size = new Size(1342, 705);
            TopToolStrip.ResumeLayout(false);
            TopToolStrip.PerformLayout();
            BtmStatusStrip.ResumeLayout(false);
            BtmStatusStrip.PerformLayout();
            MainTableLayoutPanel.ResumeLayout(false);
            parasTabControl.ResumeLayout(false);
            tabPage1.ResumeLayout(false);
            tabPage5.ResumeLayout(false);
            tableLayoutPanel2.ResumeLayout(false);
            tableLayoutPanel2.PerformLayout();
            tabPage2.ResumeLayout(false);
            tableLayoutResults.ResumeLayout(false);
            tableLayoutResults.PerformLayout();
            imgTabControl.ResumeLayout(false);
            tabPageInputImage.ResumeLayout(false);
            tabPageRecordImage.ResumeLayout(false);
            tableLayoutPanel1.ResumeLayout(false);
            tableLayoutPanel3.ResumeLayout(false);
            tableLayoutPanel3.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit();
            ResumeLayout(false);
            PerformLayout();
        }
        #endregion
        private System.Windows.Forms.Panel pnlInputImage;
        private ToolStrip TopToolStrip;
        private ToolStripButton btnRun;
        private StatusStrip BtmStatusStrip;
        private ToolStripStatusLabel lblResult;
        private ToolStripStatusLabel lblMsg;
        private TableLayoutPanel MainTableLayoutPanel;
        private ToolStripButton btnLoadImage;
        private TabControl parasTabControl;
        private TabPage tabPage1;
        private TabPage tabPage2;
        private TableLayoutPanel tableLayoutResults;
        private Label label5;
        private Label label6;
        private Label label7;
        private Label label8;
        private TextBox dtxtCenterX;
        private TextBox dtxtCenterY;
        private TextBox dtxtAngle;
        private TextBox dtxtWidth;
        private TextBox dtxtHeight;
        private Label label9;
        private TabPage tabPage5;
        private TabControl imgTabControl;
        private TabPage tabPageInputImage;
        private TabPage tabPageRecordImage;
        private ToolStripButton btnSaveParas;
        private ToolStripButton btnLoadParas;
        private Panel pnlRecordImage;
        private Label label18;
        private TextBox dtxtCount;
        private ToolStripStatusLabel lblRunTime;
        private TableLayoutPanel tableLayoutPanel2;
        public ComboBox cmbTypeRoi;
        private Label label21;
        private Label label22;
        private ComboBox cmbFixture;
        private CheckBox ckbDrawRoi;
        private TableLayoutPanel tableLayoutPanel1;
        private TableLayoutPanel tableLayoutPanel3;
        private Label label14;
        private ComboBox cmbImageEnhancement;
        private Button button1;
        private DataGridView dataGridView1;
    }
}
LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.cs
¶Ô±ÈÐÂÎļþ
@@ -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 LB_VisionProcesses.Alogrithms.Halcon._2D.HEdgeExtractionTool
{
    public partial class HImageEnhancementToolEdit : UserControl
    {
        public HImageEnhancementToolEdit()
        {
            InitializeComponent();
        }
    }
}
LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,126 @@
<?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>
  <metadata name="TopToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="BtmStatusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>174, 17</value>
  </metadata>
</root>