2019-11-04 02:23:13 -05:00
|
|
|
package com.chameleonvision.classabstraction.pipeline;
|
|
|
|
|
|
2019-11-07 09:10:09 -08:00
|
|
|
import com.chameleonvision.classabstraction.camera.CameraProcess;
|
2019-11-04 02:23:13 -05:00
|
|
|
import org.opencv.core.Mat;
|
|
|
|
|
|
2019-11-23 04:05:37 -05:00
|
|
|
import java.lang.reflect.Type;
|
2019-11-10 11:47:56 -05:00
|
|
|
import java.util.function.Supplier;
|
|
|
|
|
|
2019-11-04 02:23:13 -05:00
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @param <R> Pipeline result type
|
|
|
|
|
*/
|
2019-11-07 11:15:54 -05:00
|
|
|
public abstract class CVPipeline<R extends CVPipelineResult, S extends CVPipelineSettings> {
|
2019-11-21 05:32:19 -05:00
|
|
|
protected Mat outputMat = new Mat();
|
2019-11-10 11:47:56 -05:00
|
|
|
CameraProcess cameraProcess;
|
2019-11-23 04:05:37 -05:00
|
|
|
public final S settings;
|
2019-11-10 11:47:56 -05:00
|
|
|
|
2019-11-23 04:05:37 -05:00
|
|
|
protected CVPipeline(S settings) {
|
|
|
|
|
this.settings = settings;
|
2019-11-10 11:47:56 -05:00
|
|
|
}
|
2019-11-04 02:23:13 -05:00
|
|
|
|
2019-11-23 04:05:37 -05:00
|
|
|
protected CVPipeline(String pipelineName, S settings) {
|
|
|
|
|
this.settings = settings;
|
|
|
|
|
settings.nickname = pipelineName;
|
2019-11-04 02:23:13 -05:00
|
|
|
}
|
|
|
|
|
|
2019-11-10 11:47:56 -05:00
|
|
|
public void initPipeline(CameraProcess camera) {
|
|
|
|
|
cameraProcess = camera;
|
2019-11-23 04:05:37 -05:00
|
|
|
cameraProcess.setExposure((int) settings.exposure);
|
|
|
|
|
cameraProcess.setBrightness((int) settings.brightness);
|
2019-11-10 11:47:56 -05:00
|
|
|
}
|
|
|
|
|
abstract public R runPipeline(Mat inputMat);
|
2019-11-04 02:23:13 -05:00
|
|
|
}
|