2026-01-26 14:51:28 +09:00

57 lines
2.2 KiB
C#

/*
* 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;
}
}
}