| | |
| | | using LB_SmartVisionCommon; |
| | | using LB_VisionControl; |
| | | using LB_VisionProcesses.Alogrithms.Halcon; |
| | | using Microsoft.VisualBasic.ApplicationServices; |
| | | using OpenCvSharp; |
| | | using Sunny.UI.Win32; |
| | | using System; |
| | | using System.Collections.Generic; |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using System.Windows.Forms; |
| | | using static System.Windows.Forms.VisualStyles.VisualStyleElement; |
| | | |
| | | namespace LB_VisionProcesses.Alogrithms.Halcon |
| | | { |
| | | public partial class HImageEnhancementToolEdit : TAlgorithmEdit |
| | | { |
| | | |
| | | List<RecordImageEnhancementData> recordImageEnhancementDatas = new List<RecordImageEnhancementData>(); |
| | | private int rowriginalHeight; |
| | | public HImageEnhancementToolEdit(HImageEnhancementTool subject = null) |
| | | { |
| | |
| | | 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; |
| | | //if (!(Subject.Params.ROI is HSegment)) |
| | | // Subject.Params.ROI = new HSegment(0, 0, 250, 250); |
| | | |
| | | this.Dock = DockStyle.Fill; |
| | | InitializeComponent(); |
| | | // 保存原始行高度 |
| | | rowriginalHeight = (int)tableLayoutPanel4.RowStyles[1].Height; |
| | | |
| | | InitializeComboBox(); |
| | | InitializeDataGridView(); |
| | | |
| | | recordImageEnhancementDatas = ImageEnhancementManager.Instance.GetAllUsers(); |
| | | this.dataGridViewIE.DataSource = recordImageEnhancementDatas; |
| | | this.dataGridViewIE.AutoGenerateColumns = true; |
| | | } |
| | | |
| | | 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比例增强"); |
| | | // 添加权限选项 |
| | | foreach (var item in Enum.GetValues(typeof(ImageEnhancementDataType))) |
| | | { |
| | | cmbImageEnhancement.Items.Add(item.ToString()); |
| | | } |
| | | |
| | | // 设置默认选择项 |
| | | cmbImageEnhancement.SelectedIndex = 2; |
| | | } |
| | | #region 图像增强算法选择下拉框 |
| | | #region 算法选择下拉框 |
| | | private void cmbImageEnhancement_SelectedIndexChanged(object sender, EventArgs e) |
| | | { |
| | | ComboBox cb = sender as ComboBox; |
| | | System.Windows.Forms.ComboBox cb = sender as System.Windows.Forms.ComboBox; |
| | | |
| | | if (cb.SelectedIndex == 0) |
| | | { |
| | | ShowRow(); |
| | | } |
| | | else if (cb.SelectedIndex == 1) |
| | | { |
| | | HideRow(); |
| | | } |
| | | else |
| | | { |
| | | HideRow(); |
| | | } |
| | |
| | | #endregion |
| | | private void InitializeDataGridView() |
| | | { |
| | | //this.dataGridViewIE.DataSource = recordUserDatas; |
| | | |
| | | // 设置列标题 |
| | | dataGridViewIE.Columns[0].Name = "滤波器类型"; |
| | | dataGridViewIE.Columns[1].Name = "掩膜宽度"; |
| | | dataGridViewIE.Columns[2].Name = "掩膜高度"; |
| | | dataGridViewIE.Columns[3].Name = "增强因子"; |
| | | this.dataGridViewIE.DataSource = recordImageEnhancementDatas; |
| | | |
| | | // 设置DataGridView列宽 |
| | | dataGridViewIE.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; |
| | |
| | | cmbTypeRoi.Items.Add(value.ToString()); |
| | | |
| | | //遍历可以选择的图像增强类型枚举 |
| | | foreach (var value in Enum.GetValues(typeof(ImageEnhancementType))) |
| | | cmbImageEnhancement.Items.Add(value.ToString()); |
| | | //foreach (var value in Enum.GetValues(typeof(ImageEnhancementType))) |
| | | // cmbImageEnhancement.Items.Add(value.ToString()); |
| | | |
| | | //遍历可以选择的Fixture枚举 |
| | | cmbFixture.Items.Add(""); |
| | |
| | | |
| | | ckbDrawRoi.Checked = true; |
| | | cmbTypeRoi.Text = RoiType.Segment.ToString(); |
| | | cmbImageEnhancement.Text = Transition.Ignore.ToString(); |
| | | cmbImageEnhancement.Text = ImageEnhancementType.ScaleMax.ToString(); |
| | | LoadParas(); |
| | | |
| | | if (Subject.Result) |
| | |
| | | lblMsgToolTip.SetToolTip(BtmStatusStrip, Msg); |
| | | lblRunTime.Text = $"{Subject.RunTime}ms"; |
| | | } |
| | | private void ClearInputFields() |
| | | { |
| | | txtMaskWidth.Clear(); |
| | | txtMaskHeight.Clear(); |
| | | txtFactor.Clear(); |
| | | cmbImageEnhancement.SelectedIndex = 0; |
| | | } |
| | | private void btnAdd_Click(object sender, EventArgs e) |
| | | { |
| | | // 验证输入 |
| | | if (cmbImageEnhancement.SelectedIndex == 0) |
| | | { |
| | | if (string.IsNullOrWhiteSpace(txtMaskWidth.Text) || string.IsNullOrWhiteSpace(txtMaskHeight.Text) || string.IsNullOrWhiteSpace(txtFactor.Text)) |
| | | { |
| | | MessageBox.Show("请填写所有必填字段!", "提示", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Warning); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | RecordImageEnhancementData filter = new RecordImageEnhancementData(); |
| | | filter.MaskWidth = this.txtMaskWidth.Text; |
| | | filter.MaskHight = this.txtMaskHeight.Text; |
| | | filter.Factor = this.txtFactor.Text; |
| | | filter.FilterName = (ImageEnhancementDataType)this.cmbImageEnhancement.SelectedIndex; |
| | | // 添加到 UserManager |
| | | bool success = ImageEnhancementManager.Instance.AddUser(filter); |
| | | if (success) |
| | | { |
| | | recordImageEnhancementDatas.Add(filter); |
| | | //MessageBox.Show("用户添加成功!", "提示", |
| | | // MessageBoxButtons.OK, MessageBoxIcon.Information); |
| | | |
| | | // 清空输入框 |
| | | ClearInputFields(); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("添加用户失败!", "错误", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Error); |
| | | } |
| | | recordImageEnhancementDatas = ImageEnhancementManager.Instance.GetAllUsers(); |
| | | this.dataGridViewIE.DataSource = recordImageEnhancementDatas; |
| | | this.dataGridViewIE.AutoGenerateColumns = true; |
| | | } |
| | | |
| | | private void btnDel_Click(object sender, EventArgs e) |
| | | { |
| | | // 检查是否有选中的滤波类型 |
| | | if (cmbImageEnhancement.SelectedIndex < 0) |
| | | { |
| | | MessageBox.Show("请选择要删除的滤波类型!", "提示", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Warning); |
| | | return; |
| | | } |
| | | |
| | | try |
| | | { |
| | | DataGridViewRow selectedRow = dataGridViewIE.SelectedRows[0]; |
| | | string filterToDel = selectedRow.Cells[0].Value?.ToString(); |
| | | |
| | | ImageEnhancementDataType filterToDelete = (ImageEnhancementDataType)cmbImageEnhancement.SelectedIndex; |
| | | |
| | | // 查找对应的记录 |
| | | RecordImageEnhancementData filterToRemove = null; |
| | | |
| | | // 从本地列表中查找 |
| | | foreach (var filter in recordImageEnhancementDatas) |
| | | { |
| | | if (filter.FilterName.ToString() == filterToDel) |
| | | { |
| | | filterToRemove = filter; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (filterToRemove == null) |
| | | { |
| | | MessageBox.Show("未找到对应的记录!", "提示", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Warning); |
| | | return; |
| | | } |
| | | |
| | | // 确认删除 |
| | | DialogResult result = MessageBox.Show( |
| | | $"确定要删除 '{filterToDel}' 记录吗?", |
| | | "确认删除", |
| | | MessageBoxButtons.YesNo, |
| | | MessageBoxIcon.Question, |
| | | MessageBoxDefaultButton.Button2); // 默认选择"否" |
| | | |
| | | if (result == DialogResult.No) |
| | | return; |
| | | |
| | | // 从管理器中删除 |
| | | bool success = ImageEnhancementManager.Instance.DeleteUser(filterToRemove); |
| | | |
| | | if (success) |
| | | { |
| | | // 从本地列表中删除 |
| | | recordImageEnhancementDatas.Remove(filterToRemove); |
| | | |
| | | MessageBox.Show("删除成功!", "提示", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Information); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("删除失败!", "错误", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Error); |
| | | } |
| | | recordImageEnhancementDatas = ImageEnhancementManager.Instance.GetAllUsers(); |
| | | this.dataGridViewIE.DataSource = recordImageEnhancementDatas; |
| | | this.dataGridViewIE.AutoGenerateColumns = true; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MessageBox.Show("请选择要删除的算子"); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 更新运行参数 |
| | | /// </summary> |
| | |
| | | } |
| | | })); |
| | | } |
| | | private void btnAdd_Click(object sender, EventArgs e) |
| | | { |
| | | switch (cmbImageEnhancement.SelectedIndex) |
| | | { |
| | | case 0: |
| | | |
| | | break; |
| | | case 1: |
| | | |
| | | break; |
| | | case 2: |
| | | |
| | | break; |
| | | } |
| | | } |
| | | |
| | | #region 工具栏按钮事件 |
| | | /// <summary> |
| | | /// 点击运行 |
| | | /// </summary> |
| | |
| | | GC.Collect(); |
| | | })); |
| | | } |
| | | #region 工具栏按钮事件 |
| | | |
| | | /// <summary> |
| | | /// 工具栏“导图” |
| | | /// </summary> |
| | |
| | | } |
| | | catch { } |
| | | } |
| | | #endregion |
| | | |
| | | public override void cmbFixture_SelectedIndexChanged(object sender, EventArgs e) |
| | | { |
| | | try |
| | |
| | | } |
| | | catch { } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | } |
| | | } |