/* * Copyright (c) 2025 LG Electronics Inc. * SPDX-License-Identifier: LicenseRef-LGE-Proprietary */ using Aurora.Api; using VisionCommon; using Cognex.VisionPro; using System; using Cognex.VisionPro.ImageProcessing; using CogCommon; namespace CogCamera { /// /// 이미지 반전 및 회전을 위한 Tool /// public class CogImgFlipAndRotationTool : ImgToolBase { private Logger _Logger; private CogIPOneImageTool _CogIPOneImageTool = new CogIPOneImageTool(); /// /// 생성자 /// /// 카메라 ID /// 카메라 컨피그 public CogImgFlipAndRotationTool(eCamId camId, CamConfig camConfig) : base(camId, camConfig) { _Logger = new Logger(string.Format("MilImgFlipAndRotationTool[{0}]", camId)); SetFlipAndRotation(); } private void SetFlipAndRotation() { var imgFlipRotate = new CogIPOneImageFlipRotate(); imgFlipRotate.Enabled = true; if (IsFlipEnabled() && !IsRotationEnabled()) { // Flip ApplyFlip(ref imgFlipRotate); } else if (!IsFlipEnabled() && IsRotationEnabled()) { // Rotation ApplyRotation(ref imgFlipRotate); } else if (IsFlipEnabled() && IsRotationEnabled()) { // Flip & Rotation ApplyFlip(ref imgFlipRotate); ApplyRotation(ref imgFlipRotate); } else { // None imgFlipRotate.Enabled = false; } _CogIPOneImageTool.Operators.Add(imgFlipRotate); } /// /// 이미지 반전 및 회전 /// /// 소스 이미지 /// 결과 이미지 public void FlipAndRotation(ICogImage srcImage, ref ICogImage filteredImage) { try { _CogIPOneImageTool.InputImage = srcImage; _CogIPOneImageTool.Run(); CogEnvironment.CopyImage(_CogIPOneImageTool.OutputImage, ref filteredImage); } catch (Exception e) { _Logger.FuncE(e.Message); } } private void ApplyFlip(ref CogIPOneImageFlipRotate imgFlipRotate) { try { if (CamConfig.FlipAndRotation.ImageFlip.Equals(eImageFlip.LeftToRight)) { imgFlipRotate.OperationInPixelSpace = CogIPOneImageFlipRotateOperationConstants.Flip; } else if (CamConfig.FlipAndRotation.ImageFlip.Equals(eImageFlip.TopToBottom)) { imgFlipRotate.OperationInPixelSpace = CogIPOneImageFlipRotateOperationConstants.FlipAndRotate180Deg; } } catch (Exception e) { _Logger.FuncE(e.Message); } } private void ApplyRotation(ref CogIPOneImageFlipRotate imgFlipRotate) { try { if (CamConfig.FlipAndRotation.ImageRotation.Equals(eImageRotation.CW_DEG_90)) { imgFlipRotate.OperationInPixelSpace = CogIPOneImageFlipRotateOperationConstants.Rotate90Deg; } else if (CamConfig.FlipAndRotation.ImageRotation.Equals(eImageRotation.CW_DEG_180)) { imgFlipRotate.OperationInPixelSpace = CogIPOneImageFlipRotateOperationConstants.Rotate180Deg; } else if (CamConfig.FlipAndRotation.ImageRotation.Equals(eImageRotation.CW_DEG_270)) { imgFlipRotate.OperationInPixelSpace = CogIPOneImageFlipRotateOperationConstants.Rotate270Deg; } } catch (Exception e) { _Logger.FuncE(e.Message); } } } }