All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.flash3388.flashlib.vision.detection.TargetAnalyser Maven / Gradle / Ivy

package com.flash3388.flashlib.vision.detection;

import com.flash3388.flashlib.vision.Image;
import com.flash3388.flashlib.vision.Pipeline;
import com.flash3388.flashlib.vision.VisionException;
import com.flash3388.flashlib.vision.analysis.Analysis;
import com.flash3388.flashlib.vision.analysis.AnalysisAlgorithms;
import com.flash3388.flashlib.vision.analysis.JsonAnalysis;

import java.util.Map;

public class TargetAnalyser implements Pipeline> {

    private final RealTargetConfig mRealTargetConfig;
    private final CameraConfig mCameraConfig;
    private final Pipeline mOutPipe;

    public TargetAnalyser(RealTargetConfig realTargetConfig, CameraConfig cameraConfig, Pipeline outPipe) {
        mRealTargetConfig = realTargetConfig;
        mCameraConfig = cameraConfig;
        mOutPipe = outPipe;
    }


    @Override
    public void process(TargetResultData input) throws VisionException {
        Image originalImage = input.getImage();

        JsonAnalysis.Builder builder = new JsonAnalysis.Builder();
        for (Map.Entry entry : input.getTargets().entrySet()) {
            int id = entry.getKey();
            Target target = entry.getValue();

            double distance = AnalysisAlgorithms.measureDistance(
                    originalImage.getWidth(),
                    target.getWidthPixels(),
                    mRealTargetConfig.getWidthCm(),
                    mCameraConfig.getFovRadians());

            double angle = AnalysisAlgorithms.calculateHorizontalOffsetDegrees2(
                    target.getCenter().x(),
                    originalImage.getWidth(),
                    mCameraConfig.getFovRadians());

            builder.buildTarget()
                    .put("id", id)
                    .put("centerX", target.getCenter().x())
                    .put("centerY", target.getCenter().y())
                    .put("width", target.getWidthPixels())
                    .put("height", target.getHeightPixels())
                    .put("distance", distance)
                    .put("angle", angle)
                    .build();
        }

        mOutPipe.process(builder.build());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy