// ============================================================================ // Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved. // 文件名: OrProcessor.cs // 描述: 或运算算子,用于图像逻辑运算 // 功能: // - 对图像进行按位或运算 // - 支持与固定值或运算 // - 可用于图像合并和掩码操作 // 算法: 像素级按位或运算 // 作者: 李伟 wei.lw.li@hexagon.com // ============================================================================ using Emgu.CV; using Emgu.CV.Structure; using XP.ImageProcessing.Core; using Serilog; namespace XP.ImageProcessing.Processors; /// /// 或运算算子 /// public class OrProcessor : ImageProcessorBase { private static readonly ILogger _logger = Log.ForContext(); public OrProcessor() { Name = LocalizationHelper.GetString("OrProcessor_Name"); Description = LocalizationHelper.GetString("OrProcessor_Description"); } protected override void InitializeParameters() { Parameters.Add("Value", new ProcessorParameter( "Value", LocalizationHelper.GetString("OrProcessor_Value"), typeof(int), 0, 0, 255, LocalizationHelper.GetString("OrProcessor_Value_Desc"))); _logger.Debug("InitializeParameters"); } public override Image Process(Image inputImage) { int value = GetParameter("Value"); var result = inputImage.Clone(); // 对每个像素进行按位或运算 for (int y = 0; y < inputImage.Height; y++) { for (int x = 0; x < inputImage.Width; x++) { result.Data[y, x, 0] = (byte)(inputImage.Data[y, x, 0] | value); } } _logger.Debug("Process: Value = {Value}", value); return result; } }