using OpenCvSharp;

namespace OpenCVStudio_v0
{
    /// <summary>
    /// Исполнитель одного типа блока pipeline.
    /// </summary>
    public interface IImageBlockExecutor
    {
        /// <summary>
        /// Тип блока, который обрабатывает исполнитель.
        /// Должен совпадать с ProjectBlock.BlockType.
        /// </summary>
        string BlockType { get; }

        /// <summary>
        /// Выполняет обработку входного изображения.
        /// Возвращаемый Mat принадлежит вызывающему коду.
        /// </summary>
        Mat Execute(
            Mat input,
            ProjectBlock block,
            ProjectManager projectManager);
    }
}