/* * Copyright (c) 2025 LG Electronics Inc. * SPDX-License-Identifier: LicenseRef-LGE-Proprietary */ using Aurora.Api; using CogCommon; using Cognex.VisionPro; using Cognex.VisionPro.ImageProcessing; using System; using VisionCommon; namespace CogPattern { public class CogMorphology { private static Logger _Logger = new Logger(typeof(CogMorphology).Name); public static void Morphology(ICogImage srcImage, ref ICogImage dstImage, eMorphologyType morphologyType, int iteration) { try { var cogIPOneImageTool = new CogIPOneImageTool(); var morphologyParam = new CogIPOneImageGreyMorphology(); morphologyParam.Operation = GetMorphologyOperation(morphologyType); morphologyParam.OriginX = 1; morphologyParam.OriginY = 1; ICogImage tempImage = srcImage; cogIPOneImageTool.Operators.Add((ICogIPOneImageOperatorParams)morphologyParam); for (int i = 0; i < iteration; i++) { cogIPOneImageTool.InputImage = tempImage; cogIPOneImageTool.Run(); CogEnvironment.CopyImage(cogIPOneImageTool.OutputImage, ref tempImage); } CogEnvironment.CopyImage(tempImage, ref dstImage); morphologyParam.Dispose(); cogIPOneImageTool.Dispose(); } catch (Exception e) { _Logger.FuncE(e.Message); } } private static CogIPOneImageMorphologyOperationConstants GetMorphologyOperation(eMorphologyType morphologyType) { switch (morphologyType) { case eMorphologyType.Open: return CogIPOneImageMorphologyOperationConstants.Open; case eMorphologyType.Close: return CogIPOneImageMorphologyOperationConstants.Close; case eMorphologyType.Erode: return CogIPOneImageMorphologyOperationConstants.Erode; case eMorphologyType.Dilate: return CogIPOneImageMorphologyOperationConstants.Dilate; } return CogIPOneImageMorphologyOperationConstants.Open; } } }