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