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 = 592; sc_VisionForm.SplitterDistance = 591; 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, 592); tlp_MainView.Size = new Size(1416, 591); 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, 489); materialTabControl.Size = new Size(1412, 488); 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, 184); grb_Info.Size = new Size(1416, 185); 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, 144); rich_Info.Size = new Size(1416, 145); rich_Info.TabIndex = 0; rich_Info.TextAlignment = ContentAlignment.MiddleLeft; // LB_SmartVision/VisionForm.resx
@@ -121,24 +121,24 @@ <data name="theme_VisionForm.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO vAAADrwBlbxySQAAA+JJREFUWEftVkuIHGUQbt34iMEoq2S2q3p3yTJsuqpnJ+L6WBRdwaigohfFgEou BkVBUPCBCEG8BXNQ48GLeImCehIJxMsqhsSZruod46K4HtSIGjU+4iOr0c1I9fSsM3/PLNtCPO0H36m/ evz/X11VnreKVRTAHPOZumkY6lFwqURws3BwZ8ywTQnuiCP/+iTCzY1qaUPzdm/Atf3PaHre6XPsjyQM 2xLGV4XwIyX4QRj+UMK/lPFvJTyhBMeV8IgQvmRJuH4Ko+l5p9UjGBbCJ5RxTgj+VMZmXxKcSAjekHE/ NNs5DgaTKLinEQYVO4Trf1mkV81wixLUslPmA3bzF2XcKeP+hWY/u3n0fCXcrQwLyjAvjNsb1dI6N05P mFAIHlHG73sEypPgGwnhfpn0zzH7jzddcK4Q7kqfKNMI4a9K+MwBDgbdeF04MBWsFYYdQvhbLlBvfhKT f+vMtLfG7C0JJXxKGY67WnvCmPAFGRs7z42boul5AzHBfdK6TjdQtzPGk8oos5F/5Y7sfVvPhg+lp+1h 0yIsxARPmtaN78WEl8eEX+SNclxUhne0glUrNrN9zfMGlPAuZTzaQ99FYfwuDv3ruoLvq5bWaQSvZCfL GXUYLwrj240Qxtu2lkSN4FpdWfKZH9jb9RQ1Cq62f9sVOlxUxn3KQXnJ0PO8QxU/jBm1h74v7ZniEG9K Hdg/quzvXO709k0Y3u08ucGqWgheX862H4XgxbR47SqU8D1X0EXC2VmGizqDz0xPr0kYH9eO360gNe0b jWppozB+1kOQEb5MCLa0C64NoeGrhOGrvH6lhK81GiIvnggmrDLzgvTkvwvDA+5wsU4nhG/m9AUoBD/F HFzWN4H0XQn2vF8eXN8Z3FAPYasl59oUYjuB+sTImDB+nhfgYQ39STf4fmu1DHtz+oIUgiM1KkWtwcFw sOujVT3hrnaL7UQc+hcL5W+sKIXhw0OVjaW0iwnBc47gqIQ45QY32PKRzv8eTguRYM9SS5YouEEZjv37 EffbzbjBDdZyxZYQ12EB2qS0bWrJqRVazPDWkojwZbuZrsgZtDJ0iY1g12khEtTicMTvclwn2CKE32YJ 7G5PORfZ1HtMCH7MOV4BrQ3XCe92+4onk5Nn2PolDAvWXnuOzAwzo6Nnx4Q3SrojwqfKeMxWMpsXWVs+ 2WrfKRdbW1W6Hf0shM/33Y7my4PrleFZIfhAaWjU/e5ivlw+y3S2FySMtynjvcrwsFiLJv/RhPBB2ws1 hK2WcBLBFf1qawlplwvxaQlxe786OOU4PBWsjSO85mBlQ8n99r/BisSdAas4FfgHpdEUZpwUX7sAAAAA SUVORK5CYII= vAAADrwBlbxySQAAA+xJREFUWEftV0loFUkYbvcNFzJi0lWdBEPQruqXKEYdcRgz4AYqeplBwYiXEUVB UHAhCEG8iR509OBlmIsOjJ5EBvQSRVHzuvslxjAy8eCG+75GozF+f716L6873fqe2ykffDR59e9/1V8V ow99KARtUg72J5aypGNN8xy2yJPWcleylb5gS13HnJdy+KSW6uJx3b8ZA7TKl6PbMPq3SbMsBUcpyf/2 BP8PDh96kr32BX/rS/4O30789grfO1j/k4LQ6p8POO6XdFgpDNbDSZsn2Bt8u2MpWGdKsCPeBNMm3TZp FaUc6/cW20pQEtpsflCllmwxjDbpLKOd9vAZuBPOx5J+86TyMdDbBxsdYLsn+SpUZYQy/imQILLdBIP3 cxzEU7Dbns3WejXmcNK/NPGHkajabtUiLYO/nyOgXWdRFeUkDmdnWMOg2ACFFwEn8fzfFeaSxlpjIOlT EHC0HVm/CstSC13B93sVFaOVszDQpwGuYGtQLipnQDlMyLzH12t2zJ8adH/TbeMbVLYROmmyDvjYRrLK aS4Q3Y/gtWjFALtg6KSf4NW02Uj3HwSPzOuw9iAk24sI/p5rm3OV0wyOo+++ww7pzCIViVjvAk+02GyC VlWnpUmw2Qggn+AV0eZ/A61oEtYsOttRwjlE5vy4L61KrabQmjBtV3I/JPtRUptcmy9UBuiM+tLc+bHs aQ1Rn8rNnEC7Gpvr8KcqF0XoHVCbl0qB8p2OEspS8OZmySZrvwqNtbUDMRm3Yj9kj1uB9NXcwLkfjwyu RAhoshuYcHMyGy4DT5T+jKrcjNbJh+yW75QIw62yqhDAvUghwV/Cybrw5UKTDn08GqmTJ9GCx660pscG oPoq2MHzlUWjtN8skjZbRsGFdQpiJoBkVVkFnF3tLcCv+7ZZo31mcYZGLY5RL/kCiQrcaRLFTvrikOxc YJF2PeZ5ZsTmAkNkCtaiW1YAkcTF1sT4YjXFEM3ekMADz+YztM8AULqlqE5nSL5wor3Zkew51nxU4WnP Ij9DlVGLIWCtDhV6FzBWIJH9a3pNaZOGQRsNT6tjWSHB/6LK6OUA/ETJVER/O9dgwcQ7w7XLTG0yjSTO Onp7Ny3A92VuuTD0rbcFbXsUMJonaQwnBV8Rniu4y2sGYbEe5emA8cORV6ZGY3n5UNycC9AKvBHZZRh+ iqxoX9BlRWMZozvLLiSEV5V6HT2Bjz9iX0ftaAWE9sDoBV+UlOufY9FeWTmE5OhdgLH8Kxyvhv5GON3q C3NzSvD19C70MTco4JTDZsbtrSzUlLP5DnBV3D745riOp5nr8F/OJcYV65++P2iTfNV/MPoQCcP4AKXR FGYxo/VGAAAAAElFTkSuQmCC </value> </data> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs
@@ -3843,7 +3843,7 @@ /// <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) public static void ImageEnhancement(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 @@ -3867,19 +3867,14 @@ { hv_ImageEnhancementTypeOut.Dispose(); hv_ImageEnhancementTypeOut = "equHisto"; HOperatorSet.ScaleImageMax(ho_Image, out ho_OutImage); } else { hv_ImageEnhancementTypeOut.Dispose(); hv_ImageEnhancementTypeOut = "scaleMax"; HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage); } HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage); return; } catch (HalconException HDevExpDefaultException) @@ -3891,45 +3886,7 @@ 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> LB_VisionProcesses/Alogrithms/Halcon/2D/HFindLineTool/HFindLineToolEdit.Designer.cs
@@ -302,7 +302,7 @@ // cmbTransition.FormattingEnabled = true; cmbTransition.Location = new Point(120, 184); cmbTransition.Margin = new Padding(4, 4, 4, 4); cmbTransition.Margin = new Padding(4); cmbTransition.Name = "cmbTransition"; cmbTransition.Size = new Size(130, 28); cmbTransition.TabIndex = 13; @@ -311,7 +311,7 @@ // cmbSelect.FormattingEnabled = true; cmbSelect.Location = new Point(376, 184); cmbSelect.Margin = new Padding(4, 4, 4, 4); cmbSelect.Margin = new Padding(4); cmbSelect.Name = "cmbSelect"; cmbSelect.Size = new Size(131, 28); cmbSelect.TabIndex = 14; @@ -320,7 +320,7 @@ // btnShowROI.Dock = DockStyle.Fill; btnShowROI.Location = new Point(4, 244); btnShowROI.Margin = new Padding(4, 4, 4, 4); btnShowROI.Margin = new Padding(4); btnShowROI.Name = "btnShowROI"; btnShowROI.Size = new Size(108, 52); btnShowROI.TabIndex = 15; @@ -332,7 +332,7 @@ // pnlInputImage.Dock = DockStyle.Fill; pnlInputImage.Location = new Point(4, 4); pnlInputImage.Margin = new Padding(5, 5, 5, 5); pnlInputImage.Margin = new Padding(5); pnlInputImage.Name = "pnlInputImage"; pnlInputImage.Size = new Size(782, 603); pnlInputImage.TabIndex = 44; @@ -418,7 +418,7 @@ MainTableLayoutPanel.Controls.Add(imgTabControl, 1, 0); MainTableLayoutPanel.Dock = DockStyle.Fill; MainTableLayoutPanel.Location = new Point(0, 27); MainTableLayoutPanel.Margin = new Padding(4, 4, 4, 4); MainTableLayoutPanel.Margin = new Padding(4); MainTableLayoutPanel.Name = "MainTableLayoutPanel"; MainTableLayoutPanel.RowCount = 1; MainTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); @@ -432,7 +432,7 @@ parasTabControl.Controls.Add(tabPage2); parasTabControl.Dock = DockStyle.Fill; parasTabControl.Location = new Point(4, 4); parasTabControl.Margin = new Padding(4, 4, 4, 4); parasTabControl.Margin = new Padding(4); parasTabControl.Name = "parasTabControl"; parasTabControl.SelectedIndex = 0; parasTabControl.Size = new Size(528, 644); @@ -442,9 +442,9 @@ // tabPage1.Controls.Add(tablePanelParas); tabPage1.Location = new Point(4, 29); tabPage1.Margin = new Padding(4, 4, 4, 4); tabPage1.Margin = new Padding(4); tabPage1.Name = "tabPage1"; tabPage1.Padding = new Padding(4, 4, 4, 4); tabPage1.Padding = new Padding(4); tabPage1.Size = new Size(520, 611); tabPage1.TabIndex = 0; tabPage1.Text = "输入参数"; @@ -454,7 +454,7 @@ // tabPage5.Controls.Add(tableLayoutPanel2); tabPage5.Location = new Point(4, 29); tabPage5.Margin = new Padding(4, 4, 4, 4); tabPage5.Margin = new Padding(4); tabPage5.Name = "tabPage5"; tabPage5.Size = new Size(520, 611); tabPage5.TabIndex = 2; @@ -474,7 +474,7 @@ tableLayoutPanel2.Controls.Add(cmbFixture, 1, 1); tableLayoutPanel2.Controls.Add(ckbDrawRoi, 2, 0); tableLayoutPanel2.Location = new Point(4, 4); tableLayoutPanel2.Margin = new Padding(4, 4, 4, 4); tableLayoutPanel2.Margin = new Padding(4); tableLayoutPanel2.Name = "tableLayoutPanel2"; tableLayoutPanel2.RowCount = 8; tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F)); @@ -493,7 +493,7 @@ cmbTypeRoi.Enabled = false; cmbTypeRoi.FormattingEnabled = true; cmbTypeRoi.Location = new Point(81, 4); cmbTypeRoi.Margin = new Padding(4, 4, 4, 4); cmbTypeRoi.Margin = new Padding(4); cmbTypeRoi.Name = "cmbTypeRoi"; cmbTypeRoi.Size = new Size(154, 28); cmbTypeRoi.TabIndex = 1; @@ -527,7 +527,7 @@ // cmbFixture.FormattingEnabled = true; cmbFixture.Location = new Point(81, 39); cmbFixture.Margin = new Padding(4, 4, 4, 4); cmbFixture.Margin = new Padding(4); cmbFixture.Name = "cmbFixture"; cmbFixture.Size = new Size(154, 28); cmbFixture.TabIndex = 5; @@ -538,7 +538,7 @@ ckbDrawRoi.AutoSize = true; ckbDrawRoi.CheckAlign = ContentAlignment.MiddleCenter; ckbDrawRoi.Location = new Point(274, 4); ckbDrawRoi.Margin = new Padding(4, 4, 4, 4); ckbDrawRoi.Margin = new Padding(4); ckbDrawRoi.Name = "ckbDrawRoi"; ckbDrawRoi.Size = new Size(18, 17); ckbDrawRoi.TabIndex = 2; @@ -549,9 +549,9 @@ // tabPage2.Controls.Add(tableLayoutResults); tabPage2.Location = new Point(4, 29); tabPage2.Margin = new Padding(4, 4, 4, 4); tabPage2.Margin = new Padding(4); tabPage2.Name = "tabPage2"; tabPage2.Padding = new Padding(4, 4, 4, 4); tabPage2.Padding = new Padding(4); tabPage2.Size = new Size(520, 611); tabPage2.TabIndex = 1; tabPage2.Text = "输出结果"; @@ -723,7 +723,7 @@ // dtxtCount.Dock = DockStyle.Fill; dtxtCount.Location = new Point(133, 304); dtxtCount.Margin = new Padding(4, 4, 4, 4); dtxtCount.Margin = new Padding(4); dtxtCount.Name = "dtxtCount"; dtxtCount.ReadOnly = true; dtxtCount.Size = new Size(375, 27); @@ -735,7 +735,7 @@ imgTabControl.Controls.Add(tabPageRecordImage); imgTabControl.Dock = DockStyle.Fill; imgTabControl.Location = new Point(540, 4); imgTabControl.Margin = new Padding(4, 4, 4, 4); imgTabControl.Margin = new Padding(4); imgTabControl.Name = "imgTabControl"; imgTabControl.SelectedIndex = 0; imgTabControl.Size = new Size(798, 644); @@ -745,9 +745,9 @@ // tabPageInputImage.Controls.Add(pnlInputImage); tabPageInputImage.Location = new Point(4, 29); tabPageInputImage.Margin = new Padding(4, 4, 4, 4); tabPageInputImage.Margin = new Padding(4); tabPageInputImage.Name = "tabPageInputImage"; tabPageInputImage.Padding = new Padding(4, 4, 4, 4); tabPageInputImage.Padding = new Padding(4); tabPageInputImage.Size = new Size(790, 611); tabPageInputImage.TabIndex = 0; tabPageInputImage.Text = "输入图像"; @@ -757,10 +757,10 @@ // tabPageRecordImage.Controls.Add(pnlRecordImage); tabPageRecordImage.Location = new Point(4, 29); tabPageRecordImage.Margin = new Padding(4, 4, 4, 4); tabPageRecordImage.Margin = new Padding(4); tabPageRecordImage.Name = "tabPageRecordImage"; tabPageRecordImage.Padding = new Padding(4, 4, 4, 4); tabPageRecordImage.Size = new Size(790, 609); tabPageRecordImage.Padding = new Padding(4); tabPageRecordImage.Size = new Size(790, 611); tabPageRecordImage.TabIndex = 1; tabPageRecordImage.Text = "结果图像"; tabPageRecordImage.UseVisualStyleBackColor = true; @@ -769,9 +769,9 @@ // pnlRecordImage.Dock = DockStyle.Fill; pnlRecordImage.Location = new Point(4, 4); pnlRecordImage.Margin = new Padding(5, 5, 5, 5); pnlRecordImage.Margin = new Padding(5); pnlRecordImage.Name = "pnlRecordImage"; pnlRecordImage.Size = new Size(782, 601); pnlRecordImage.Size = new Size(782, 603); pnlRecordImage.TabIndex = 45; // // HFindLineToolEdit LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementTool.cs
@@ -7,12 +7,12 @@ using System.Threading.Tasks; using static System.Runtime.InteropServices.JavaScript.JSType; namespace LB_VisionProcesses.Alogrithms.Halcon._2D.HEdgeExtraction namespace LB_VisionProcesses.Alogrithms.Halcon { public enum ImageEnhancementType { Emphasize, EquHisto, ScaleMax } [Process("Halcon图像增强", Category = "Halcon2D工具", Description = "创建图像增强工具")] internal class HImageEnhancementTool : TAlgorithm public class HImageEnhancementTool : TAlgorithm { public HImageEnhancementTool() { @@ -20,9 +20,9 @@ strProcessName = "Halcon图像增强工具"; Params.Inputs.Add("滤波器类型", "边缘增强"); Params.Inputs.Add("掩膜宽", 2.0); Params.Inputs.Add("掩膜高", 10); Params.Inputs.Add("增强因子", 20); Params.Inputs.Add("掩膜宽", 1); Params.Inputs.Add("掩膜高", 1); Params.Inputs.Add("增强因子", 1.0); //emphasize(Image : ImageEmphasize : MaskWidth, MaskHeight, Factor : ) Params.Inputs.Add("滤波器类型", "直方图均衡化"); @@ -129,7 +129,7 @@ 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); ImageEnhancement(hoDomainImage, out ho_Regions, hv_ImageEnhancementType, hv_Column1, hv_Row2, hv_Column2); #endregion LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.Designer.cs
@@ -1,6 +1,6 @@ using LB_VisionProcesses.Alogrithms; namespace LB_VisionProcesses.Alogrithms.Halcon._2D.HEdgeExtractionTool namespace LB_VisionProcesses.Alogrithms.Halcon { partial class HImageEnhancementToolEdit { @@ -43,6 +43,20 @@ MainTableLayoutPanel = new TableLayoutPanel(); parasTabControl = new TabControl(); tabPage1 = new TabPage(); tableLayoutPanel1 = new TableLayoutPanel(); dataGridViewIE = new DataGridView(); tableLayoutPanel4 = new TableLayoutPanel(); tableLayoutPanel3 = new TableLayoutPanel(); cmbImageEnhancement = new ComboBox(); btnAdd = new Button(); labelImageEnhancement = new Label(); tableLayoutPanel5 = new TableLayoutPanel(); labelMaskWidth = new Label(); labelMaskHeight = new Label(); labelFactor = new Label(); txtMaskWidth = new TextBox(); txtMaskHeight = new TextBox(); txtFactor = new TextBox(); tabPage5 = new TabPage(); tableLayoutPanel2 = new TableLayoutPanel(); cmbTypeRoi = new ComboBox(); @@ -50,45 +64,25 @@ 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(); tableLayoutPanel1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)dataGridViewIE).BeginInit(); tableLayoutPanel4.SuspendLayout(); tableLayoutPanel3.SuspendLayout(); tableLayoutPanel5.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 @@ -188,7 +182,6 @@ // 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); @@ -208,6 +201,161 @@ tabPage1.TabIndex = 0; tabPage1.Text = "输入参数"; tabPage1.UseVisualStyleBackColor = true; // // tableLayoutPanel1 // tableLayoutPanel1.ColumnCount = 1; tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); tableLayoutPanel1.Controls.Add(dataGridViewIE, 0, 1); tableLayoutPanel1.Controls.Add(tableLayoutPanel4, 0, 0); tableLayoutPanel1.Dock = DockStyle.Fill; tableLayoutPanel1.Location = new Point(4, 4); tableLayoutPanel1.Name = "tableLayoutPanel1"; tableLayoutPanel1.RowCount = 2; tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 135F)); tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); tableLayoutPanel1.Size = new Size(512, 603); tableLayoutPanel1.TabIndex = 1; // // dataGridViewIE // dataGridViewIE.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; dataGridViewIE.Location = new Point(3, 138); dataGridViewIE.Name = "dataGridViewIE"; dataGridViewIE.RowHeadersWidth = 51; dataGridViewIE.Size = new Size(506, 462); dataGridViewIE.TabIndex = 2; // // tableLayoutPanel4 // tableLayoutPanel4.ColumnCount = 1; tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); tableLayoutPanel4.Controls.Add(tableLayoutPanel3, 0, 0); tableLayoutPanel4.Controls.Add(tableLayoutPanel5, 0, 1); tableLayoutPanel4.Location = new Point(3, 3); tableLayoutPanel4.Name = "tableLayoutPanel4"; tableLayoutPanel4.RowCount = 2; tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F)); tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); tableLayoutPanel4.Size = new Size(506, 125); tableLayoutPanel4.TabIndex = 3; // // tableLayoutPanel3 // tableLayoutPanel3.ColumnCount = 3; tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 125F)); tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 125F)); tableLayoutPanel3.Controls.Add(cmbImageEnhancement, 1, 0); tableLayoutPanel3.Controls.Add(btnAdd, 2, 0); tableLayoutPanel3.Controls.Add(labelImageEnhancement, 0, 0); tableLayoutPanel3.Location = new Point(3, 3); tableLayoutPanel3.Name = "tableLayoutPanel3"; tableLayoutPanel3.RowCount = 1; tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); tableLayoutPanel3.Size = new Size(500, 38); tableLayoutPanel3.TabIndex = 1; // // cmbImageEnhancement // cmbImageEnhancement.FormattingEnabled = true; cmbImageEnhancement.Location = new Point(129, 4); cmbImageEnhancement.Margin = new Padding(4); cmbImageEnhancement.Name = "cmbImageEnhancement"; cmbImageEnhancement.Size = new Size(242, 28); cmbImageEnhancement.TabIndex = 14; cmbImageEnhancement.SelectedIndexChanged += cmbImageEnhancement_SelectedIndexChanged; // // btnAdd // btnAdd.Location = new Point(378, 3); btnAdd.Name = "btnAdd"; btnAdd.Size = new Size(119, 30); btnAdd.TabIndex = 15; btnAdd.Text = "添加"; btnAdd.UseVisualStyleBackColor = true; btnAdd.Click += btnAdd_Click; // // labelImageEnhancement // labelImageEnhancement.AutoSize = true; labelImageEnhancement.Location = new Point(3, 0); labelImageEnhancement.MaximumSize = new Size(0, 33); labelImageEnhancement.MinimumSize = new Size(0, 33); labelImageEnhancement.Name = "labelImageEnhancement"; labelImageEnhancement.Size = new Size(69, 33); labelImageEnhancement.TabIndex = 1; labelImageEnhancement.Text = "滤波类型"; labelImageEnhancement.TextAlign = ContentAlignment.MiddleCenter; // // tableLayoutPanel5 // tableLayoutPanel5.ColumnCount = 4; tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F)); tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F)); tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F)); tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F)); tableLayoutPanel5.Controls.Add(labelMaskWidth, 0, 0); tableLayoutPanel5.Controls.Add(labelMaskHeight, 2, 0); tableLayoutPanel5.Controls.Add(labelFactor, 0, 1); tableLayoutPanel5.Controls.Add(txtMaskWidth, 1, 0); tableLayoutPanel5.Controls.Add(txtMaskHeight, 3, 0); tableLayoutPanel5.Controls.Add(txtFactor, 1, 1); tableLayoutPanel5.Location = new Point(3, 48); tableLayoutPanel5.Name = "tableLayoutPanel5"; tableLayoutPanel5.RowCount = 2; tableLayoutPanel5.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)); tableLayoutPanel5.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)); tableLayoutPanel5.Size = new Size(500, 74); tableLayoutPanel5.TabIndex = 2; // // labelMaskWidth // labelMaskWidth.AutoSize = true; labelMaskWidth.Location = new Point(3, 0); labelMaskWidth.Name = "labelMaskWidth"; labelMaskWidth.Size = new Size(54, 20); labelMaskWidth.TabIndex = 0; labelMaskWidth.Text = "掩膜宽"; // // labelMaskHeight // labelMaskHeight.AutoSize = true; labelMaskHeight.Location = new Point(253, 0); labelMaskHeight.Name = "labelMaskHeight"; labelMaskHeight.Size = new Size(54, 20); labelMaskHeight.TabIndex = 1; labelMaskHeight.Text = "掩膜高"; // // labelFactor // labelFactor.AutoSize = true; labelFactor.Location = new Point(3, 37); labelFactor.Name = "labelFactor"; labelFactor.Size = new Size(69, 20); labelFactor.TabIndex = 2; labelFactor.Text = "增强因子"; // // txtMaskWidth // txtMaskWidth.Location = new Point(128, 3); txtMaskWidth.Name = "txtMaskWidth"; txtMaskWidth.Size = new Size(119, 27); txtMaskWidth.TabIndex = 3; // // txtMaskHeight // txtMaskHeight.Location = new Point(378, 3); txtMaskHeight.Name = "txtMaskHeight"; txtMaskHeight.Size = new Size(119, 27); txtMaskHeight.TabIndex = 4; // // txtFactor // txtFactor.Location = new Point(128, 40); txtFactor.Name = "txtFactor"; txtFactor.Size = new Size(119, 27); txtFactor.TabIndex = 5; // // tabPage5 // @@ -301,190 +449,6 @@ 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); @@ -530,76 +494,6 @@ 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); @@ -617,19 +511,19 @@ MainTableLayoutPanel.ResumeLayout(false); parasTabControl.ResumeLayout(false); tabPage1.ResumeLayout(false); tableLayoutPanel1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)dataGridViewIE).EndInit(); tableLayoutPanel4.ResumeLayout(false); tableLayoutPanel3.ResumeLayout(false); tableLayoutPanel3.PerformLayout(); tableLayoutPanel5.ResumeLayout(false); tableLayoutPanel5.PerformLayout(); 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(); } @@ -645,18 +539,6 @@ 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; @@ -664,8 +546,6 @@ private ToolStripButton btnSaveParas; private ToolStripButton btnLoadParas; private Panel pnlRecordImage; private Label label18; private TextBox dtxtCount; private ToolStripStatusLabel lblRunTime; private TableLayoutPanel tableLayoutPanel2; public ComboBox cmbTypeRoi; @@ -675,9 +555,17 @@ private CheckBox ckbDrawRoi; private TableLayoutPanel tableLayoutPanel1; private TableLayoutPanel tableLayoutPanel3; private Label label14; private Label labelImageEnhancement; private ComboBox cmbImageEnhancement; private Button button1; private DataGridView dataGridView1; private DataGridView dataGridViewIE; private TableLayoutPanel tableLayoutPanel4; private Button btnAdd; private TableLayoutPanel tableLayoutPanel5; private Label labelMaskWidth; private Label labelMaskHeight; private Label labelFactor; private TextBox txtMaskWidth; private TextBox txtMaskHeight; private TextBox txtFactor; } } LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.cs
@@ -1,4 +1,9 @@ using System; using HalconDotNet; using LB_SmartVisionCommon; using LB_VisionControl; using LB_VisionProcesses.Alogrithms.Halcon; using Sunny.UI.Win32; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; @@ -8,13 +13,454 @@ using System.Threading.Tasks; using System.Windows.Forms; namespace LB_VisionProcesses.Alogrithms.Halcon._2D.HEdgeExtractionTool namespace LB_VisionProcesses.Alogrithms.Halcon { public partial class HImageEnhancementToolEdit : UserControl public partial class HImageEnhancementToolEdit : TAlgorithmEdit { public HImageEnhancementToolEdit() private int rowriginalHeight; public HImageEnhancementToolEdit(HImageEnhancementTool subject = null) { if (subject != null && subject is HImageEnhancementTool) Subject = subject; else Subject = new HImageEnhancementTool(); if (!(Subject.Params.ROI is HSegment)) Subject.Params.ROI = new HSegment(0, 0, 250, 250); // 保存原始行高度 rowriginalHeight = (int)tableLayoutPanel4.RowStyles[1].Height; this.Dock = DockStyle.Fill; InitializeComponent(); InitializeComboBox(); InitializeDataGridView(); } private void InitializeComboBox() { //// 添加权限选项 //foreach (var item in Enum.GetValues(typeof(UserPermission))) //{ // cmbImageEnhancement.Items.Add(item.ToString()); //} cmbImageEnhancement.Items.Add("emphasize边缘增强"); cmbImageEnhancement.Items.Add("equ_histo_image直方图均衡化"); cmbImageEnhancement.Items.Add("scale_image_max比例增强"); // 设置默认选择项 cmbImageEnhancement.SelectedIndex = 2; } #region 图像增强算法选择下拉框 private void cmbImageEnhancement_SelectedIndexChanged(object sender, EventArgs e) { ComboBox cb = sender as ComboBox; if (cb.SelectedIndex == 0) { ShowRow(); } else if (cb.SelectedIndex == 1) { HideRow(); } } private void ShowRow() { // 显示Row2(恢复高度) tableLayoutPanel4.RowStyles[1].SizeType = SizeType.Absolute; tableLayoutPanel4.RowStyles[1].Height = rowriginalHeight; // 显示Row2中的控件 foreach (Control ctrl in tableLayoutPanel4.Controls) { int row = tableLayoutPanel4.GetRow(ctrl); if (row == 1) ctrl.Visible = true; } } private void HideRow() { // 显示Row2(恢复高度) tableLayoutPanel4.RowStyles[1].SizeType = SizeType.Absolute; tableLayoutPanel4.RowStyles[1].Height = 0; // 显示Row2中的控件 foreach (Control ctrl in tableLayoutPanel4.Controls) { int row = tableLayoutPanel4.GetRow(ctrl); if (row == 1) ctrl.Visible = false; } } #endregion private void InitializeDataGridView() { //this.dataGridViewIE.DataSource = recordUserDatas; // 设置列标题 dataGridViewIE.Columns[0].Name = "滤波器类型"; dataGridViewIE.Columns[1].Name = "掩膜宽度"; dataGridViewIE.Columns[2].Name = "掩膜高度"; dataGridViewIE.Columns[3].Name = "增强因子"; // 设置DataGridView列宽 dataGridViewIE.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; } /// <summary> /// 控件加载事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void HImageEnhancementToolEdit_Load(object sender, EventArgs e) { pnlInputImage.Controls.Add(inputImageHSmartWindowControl); inputImageHSmartWindowControl.Dock = DockStyle.Fill; pnlRecordImage.Controls.Add(recordImageHSmartWindowControl); recordImageHSmartWindowControl.Dock = DockStyle.Fill; //遍历可以选择的Roi类型枚举 foreach (var value in Enum.GetValues(typeof(RoiType))) cmbTypeRoi.Items.Add(value.ToString()); //遍历可以选择的图像增强类型枚举 foreach (var value in Enum.GetValues(typeof(ImageEnhancementType))) cmbImageEnhancement.Items.Add(value.ToString()); //遍历可以选择的Fixture枚举 cmbFixture.Items.Add(""); foreach (string value in IProcess.dicFixtures.Keys) cmbFixture.Items.Add(value.ToString()); ckbDrawRoi.Checked = true; cmbTypeRoi.Text = RoiType.Segment.ToString(); cmbImageEnhancement.Text = Transition.Ignore.ToString(); LoadParas(); if (Subject.Result) { lblResult.BackColor = Color.Green; lblResult.Text = "True"; } else { lblResult.BackColor = Color.Red; lblResult.Text = "False"; } lblMsg.Text = Msg.Length > 50 ? Msg.Substring(0, 50) : Msg; lblMsgToolTip.SetToolTip(BtmStatusStrip, Msg); lblRunTime.Text = $"{Subject.RunTime}ms"; } /// <summary> /// 更新运行参数 /// </summary> public override void UpdataInputs() { //设置运行参数 double dResult = 0; int iResult = 0; if (cmbFixture.Text == "") Subject.Params.Fixture = new Fixture(); else if (IProcess.dicFixtures.ContainsKey(cmbFixture.Text)) Subject.Params.Fixture = IProcess.dicFixtures[cmbFixture.Text]; Type type = inputImageHSmartWindowControl.oRoi?.GetType(); switch (type) { case Type t when t == typeof(HRectangle2): HRectangle2 hRectangle2 = (HRectangle2)inputImageHSmartWindowControl.oRoi; Subject.Params.ROI = new HRectangle2(hRectangle2.X - Subject.Params.Fixture.X, hRectangle2.Y - Subject.Params.Fixture.Y , hRectangle2.Phi - Subject.Params.Fixture.Phi, hRectangle2.Width, hRectangle2.Height); break; case Type t when t == typeof(HCircle): HCircle hCircle = (HCircle)inputImageHSmartWindowControl.oRoi; Subject.Params.ROI = new HCircle(hCircle.X - Subject.Params.Fixture.X, hCircle.Y - Subject.Params.Fixture.Y, hCircle.Radius); break; case Type t when t == typeof(HSegment): HSegment hSegment = (HSegment)inputImageHSmartWindowControl.oRoi; Subject.Params.ROI = new HSegment(hSegment.StartX - Subject.Params.Fixture.X, hSegment.StartY - Subject.Params.Fixture.Y , hSegment.EndX - Subject.Params.Fixture.X, hSegment.EndY - Subject.Params.Fixture.Y); break; default: Subject.Params.ROI = new ROI(); break; } } /// <summary> /// 加载运行参数 /// </summary> public override void LoadParas() { this.BeginInvoke(new Action(() => { if (Subject.InputImage != null && Subject.InputImage is HObject) inputImageHSmartWindowControl.ShowHoImage((HObject)Subject.InputImage); Type type = Subject.Params.ROI?.GetType(); if (Subject.Params.ROI != null) { switch (type) { case Type t when t == typeof(HRectangle2): cmbTypeRoi.Text = RoiType.Rectangle2.ToString(); break; case Type t when t == typeof(HCircle): cmbTypeRoi.Text = RoiType.Circle.ToString(); break; case Type t when t == typeof(HSegment): cmbTypeRoi.Text = RoiType.Segment.ToString(); break; default: cmbTypeRoi.Text = RoiType.None.ToString(); break; } if (cmbTypeRoi.Text.ToString() != "None") ckbDrawRoi.Checked = true; else ckbDrawRoi.Checked = false; inputImageHSmartWindowControl.oRoi = Subject.Params.ROI; } if (Subject.Params.Fixture != null) cmbFixture.Text = Subject.Params.Fixture.strName; else cmbFixture.Text = ""; switch (type) { case Type t when t == typeof(HRectangle2): inputImageHSmartWindowControl.oRoi = new HRectangle2(Subject.Params.ROI.X + Subject.Params.Fixture.X, Subject.Params.ROI.Y + Subject.Params.Fixture.Y , Subject.Params.ROI.Phi + Subject.Params.Fixture.Phi, ((HRectangle2)Subject.Params.ROI).Width, ((HRectangle2)Subject.Params.ROI).Height); break; case Type t when t == typeof(HCircle): inputImageHSmartWindowControl.oRoi = new HCircle(Subject.Params.ROI.X + Subject.Params.Fixture.X, Subject.Params.ROI.Y + Subject.Params.Fixture.Y , ((HCircle)Subject.Params.ROI).Radius); break; case Type t when t == typeof(HSegment): inputImageHSmartWindowControl.oRoi = new HSegment(((HSegment)Subject.Params.ROI).StartX + Subject.Params.Fixture.X, ((HSegment)Subject.Params.ROI).StartY + Subject.Params.Fixture.Y , ((HSegment)Subject.Params.ROI).EndX + Subject.Params.Fixture.X, ((HSegment)Subject.Params.ROI).EndY + Subject.Params.Fixture.Y); break; default: inputImageHSmartWindowControl.oRoi = null; break; } })); } private void btnAdd_Click(object sender, EventArgs e) { switch (cmbImageEnhancement.SelectedIndex) { case 0: break; case 1: break; case 2: break; } } /// <summary> /// 点击运行 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override void btnRun_Click(object sender, EventArgs e) { if (Subject.InputImage != null) InputImage = Subject.InputImage; DateTime StartTime = DateTime.Now; Run(); //更新日志与结果 this.BeginInvoke(new Action(() => { if (Subject.Result) { lblResult.BackColor = Color.Green; lblResult.Text = "True"; recordImageHSmartWindowControl.SetColor("green"); } else { lblResult.BackColor = Color.Red; lblResult.Text = "False"; recordImageHSmartWindowControl.SetColor("red"); } lblMsg.Text = Msg.Length > 50 ? Msg.Substring(0, 50) : Msg; lblMsgToolTip.SetToolTip(BtmStatusStrip, Msg); lblRunTime.Text = $"{(DateTime.Now - StartTime).TotalMilliseconds}ms"; UpdataOutputs(); imgTabControl.SelectedTab = tabPageRecordImage; if (Subject.InputImage != null && Subject.InputImage is HObject) { HOperatorSet.GetImageSize((HObject)Subject.InputImage, out HTuple ho_ImageWidth, out HTuple ho_ImageHeight); recordImageHSmartWindowControl.ShowHoImage((HObject)Subject.InputImage); } //先判断子类再判断父类 if (Subject.Record != null && Subject.Record is MsgRecord msgRecord) { recordImageHSmartWindowControl.DispObj(msgRecord.RecordObject_OK, true); recordImageHSmartWindowControl.DispObj(msgRecord.RecordObject_NG, false); for (int i = 0; i < msgRecord.Msg.Length; i++) recordImageHSmartWindowControl.ShowMsg(msgRecord.Msg[i] , 1 == msgRecord.Result[i] ? true : false, msgRecord.Column[i], msgRecord.Row[i]); } else if (Subject.Record != null && Subject.Record is ObjectRecord objRecord) { recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_OK, true); recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_NG, false); } GC.Collect(); })); } #region 工具栏按钮事件 /// <summary> /// 工具栏“导图” /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override void btnLoadImage_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); // 设置文件对话框的属性 openFileDialog.Multiselect = false; // 不允许多选 // 设置文件过滤器,支持多种文件类型 openFileDialog.Filter = "Image Files (*.png;*.jpg;*.jpeg;*.bmp)|*.png;*.jpg;*.jpeg;*.bmp|All Files (*.*)|*.*"; // 显示文件对话框 DialogResult result = openFileDialog.ShowDialog(); // 处理对话框返回结果 if (result == DialogResult.OK) { // 获取用户选择的文件名 string[] selectedFiles = openFileDialog.FileNames; if (selectedFiles.Length > 0) { HOperatorSet.ReadImage(out HObject ho_Image, selectedFiles[0]); //判断是否为灰度图 using (HDevDisposeHelper dh = new HDevDisposeHelper()) { HOperatorSet.CountChannels(ho_Image, out HTuple hv_Channels); if (hv_Channels.TupleInt() != 1) { HOperatorSet.Rgb1ToGray(ho_Image, out ho_Image); //更新日志与结果 this.BeginInvoke(new Action(() => { lblMsg.Text = "导入图片非灰度图,自动转换为灰度图"; })); } InputImage = ho_Image; imgTabControl.SelectedTab = tabPageInputImage; inputImageHSmartWindowControl.oRoi = inputImageHSmartWindowControl.oRoi; } } } } /// <summary> /// 工具栏“保存” /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override void btnSaveParas_Click(object sender, EventArgs e) { base.btnSaveParas_Click(sender, e); } #endregion #region ROI功能 /// <summary> /// 是否启用ROI /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override void ckbDrawRoi_CheckedChanged(object sender, EventArgs e) { if (ckbDrawRoi.Checked) { inputImageHSmartWindowControl.bAollowDraw = true; imgTabControl.SelectedTab = tabPageInputImage; } else { inputImageHSmartWindowControl.bAollowDraw = false; Subject.Params.ROI = new ROI(); } } /// <summary> /// ROI下拉框改变事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override void cmbTypeRoi_SelectedIndexChanged(object sender, EventArgs e) { try { if (Enum.TryParse(cmbTypeRoi.Text.ToString(), out RoiType type)) { HTuple hv_imageWidth = 0; HTuple hv_imageHeight = 0; if (InputImage != null && InputImage is HObject) HOperatorSet.GetImageSize((HObject)InputImage, out hv_imageWidth, out hv_imageHeight); switch (type) { case RoiType.Rectangle2: inputImageHSmartWindowControl.oRoi = new HRectangle2(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2, 0 , hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4); break; case RoiType.Circle: inputImageHSmartWindowControl.oRoi = new HCircle(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2, hv_imageWidth.TupleReal() / 4); break; case RoiType.Segment: inputImageHSmartWindowControl.oRoi = new HSegment(0, 0, hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4); break; case RoiType.None: default: inputImageHSmartWindowControl.oRoi = null; break; } } } catch { } } #endregion public override void cmbFixture_SelectedIndexChanged(object sender, EventArgs e) { try { if (IProcess.dicFixtures.ContainsKey(cmbFixture.Text)) Subject.Params.Fixture = IProcess.dicFixtures[cmbFixture.Text]; else Subject.Params.Fixture = new Fixture(); } catch { } } } } LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.resx
@@ -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>174, 17</value> <value>340, 17</value> </metadata> </root> LB_VisionProcesses/ProcessEditForm.cs
@@ -99,7 +99,7 @@ e.Cancel = true; //取消关闭窗体 return; } if (res == DialogResult.Yes && OriProcess != null) //保存VPP { //利用反射创建实例,命名规范:Tool+Edit