package com.chameleonvision.classabstraction.pipeline; import com.chameleonvision.classabstraction.camera.CameraProcess; import org.opencv.core.Mat; import java.util.function.Supplier; /** * * @param Pipeline result type */ public abstract class CVPipeline { protected Mat outputMat = new Mat(); CameraProcess cameraProcess; final Supplier settingsSupplier; public CVPipeline(Supplier settingsSupplier) { this.settingsSupplier = settingsSupplier; } public S getSettings() { return settingsSupplier.get(); } public void initPipeline(CameraProcess camera) { cameraProcess = camera; cameraProcess.setExposure((int) getSettings().exposure); cameraProcess.setBrightness((int) getSettings().brightness); } abstract public R runPipeline(Mat inputMat); }