134 lines
4.1 KiB
C#
134 lines
4.1 KiB
C#
/*
|
|
* Copyright (c) 2025 LG Electronics Inc.
|
|
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
|
|
*/
|
|
using Aurora.Api;
|
|
using Cognex.VisionPro;
|
|
using Cognex.VisionPro.Display;
|
|
using CogPattern;
|
|
using System;
|
|
using System.Collections;
|
|
using System.ComponentModel;
|
|
using System.Windows;
|
|
using System.Windows.Forms;
|
|
using VisionCommon;
|
|
|
|
namespace CogUI {
|
|
public partial class ImageMaskEditWindow : Window {
|
|
private Logger _Logger = new Logger("ImageMaskEditWindow");
|
|
|
|
private PatternAgentBase _PatternAgent;
|
|
private PatternInfo _PatternInfo;
|
|
private CogDisplay _CogDisplay;
|
|
|
|
public ImageMaskEditWindow(
|
|
ICogImage inputImage,
|
|
PatternAgentBase patternAgent,
|
|
PatternInfo patternInfo) {
|
|
|
|
InitializeComponent();
|
|
|
|
_PatternAgent = patternAgent;
|
|
_PatternInfo = patternInfo;
|
|
|
|
SetInputImage(inputImage);
|
|
SetDisplay();
|
|
SetTrainEdge();
|
|
}
|
|
|
|
private void SetInputImage(ICogImage inputImage) {
|
|
var trainParam = _PatternAgent.GetTrainParam(_PatternInfo) as ImageModelFinderTrainParam;
|
|
cogImageMaskEditV2.Image = inputImage;
|
|
cogImageMaskEditV2.MaskImage = trainParam.TrainMask as CogImage8Grey;
|
|
}
|
|
|
|
private void SetDisplay() {
|
|
if (_CogDisplay == null) {
|
|
_CogDisplay = GetDisplay();
|
|
InitCogDisplay();
|
|
}
|
|
_CogDisplay?.Fit(true);
|
|
}
|
|
|
|
private void InitCogDisplay() {
|
|
_CogDisplay.AutoFitWithGraphics = true;
|
|
_CogDisplay.VerticalScrollBar = false;
|
|
_CogDisplay.HorizontalScrollBar = false;
|
|
_CogDisplay.BackColor = System.Drawing.Color.Black;
|
|
_CogDisplay.AutoFit = true;
|
|
_CogDisplay.DoubleClick += CogDisplay_DoubleClick;
|
|
}
|
|
|
|
private void SetTrainEdge() {
|
|
DisplayDrawer.AddTrainEdge(_CogDisplay, _PatternAgent, _PatternInfo);
|
|
}
|
|
|
|
private void CogDisplay_DoubleClick(object sender, EventArgs e) {
|
|
_CogDisplay?.Fit(true);
|
|
}
|
|
|
|
private CogDisplay GetDisplay() {
|
|
try {
|
|
for (int i = 0; i < cogImageMaskEditV2.Controls.Count; i++) {
|
|
Control[] allControls = GetAllControls(cogImageMaskEditV2.Controls[i]);
|
|
|
|
foreach (Control control in allControls) {
|
|
if (control.GetType() == typeof(CogDisplay))
|
|
return control as CogDisplay;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e) {
|
|
_Logger.FuncE(e.Message);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public Control[] GetAllControls(Control parentControl) {
|
|
try {
|
|
ArrayList allControls = new ArrayList();
|
|
Queue queue = new Queue();
|
|
queue.Enqueue(parentControl.Controls);
|
|
|
|
while (queue.Count > 0) {
|
|
Control.ControlCollection controls = (Control.ControlCollection)queue.Dequeue();
|
|
|
|
if (controls == null || controls.Count == 0)
|
|
continue;
|
|
|
|
foreach (Control control in controls) {
|
|
allControls.Add(control);
|
|
queue.Enqueue(control.Controls);
|
|
}
|
|
}
|
|
|
|
return (Control[])allControls.ToArray(typeof(Control));
|
|
}
|
|
catch (Exception e) {
|
|
_Logger.FuncE(e.Message);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
private void Apply_Button_Click(object sender, RoutedEventArgs e) {
|
|
this.DialogResult = true;
|
|
this.Close();
|
|
}
|
|
|
|
private void Cancel_Button_Click(object sender, RoutedEventArgs e) {
|
|
this.DialogResult = false;
|
|
this.Close();
|
|
}
|
|
|
|
public CogImageMaskEditV2 GetMaskEditTool() {
|
|
return cogImageMaskEditV2;
|
|
}
|
|
|
|
public void SetMaskImage(ICogImage maskImage) {
|
|
cogImageMaskEditV2.MaskImage = maskImage as CogImage8Grey;
|
|
}
|
|
}
|
|
}
|