57 lines
2.2 KiB
C#
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;
|
|
}
|
|
}
|
|
} |