Пример #1
0
  @Override
  public List<Frame> execute(List<CVParticle> input) throws Exception {
    Frame frame = null;
    List<Feature> features = new ArrayList<Feature>();
    for (CVParticle particle : input) {
      if (particle instanceof Feature) {
        features.add((Feature) particle);
      } else if (particle instanceof Frame && frame == null) {
        frame = (Frame) particle;
      }
    }
    if (frame == null)
      frame =
          new Frame(
              input.get(0).getStreamId(),
              input.get(0).getSequenceNr(),
              Frame.NO_IMAGE,
              (byte[]) null,
              0L,
              new Rectangle());

    // merge new features with already existing features in the Frame
    f1:
    for (Feature newF : features) {
      for (Feature oldF : frame.getFeatures()) {
        if (newF.getName().equals(oldF.getName())) {
          oldF.getSparseDescriptors().addAll(newF.getSparseDescriptors());
          continue f1;
        }
      }
      frame.getFeatures().add(newF);
    }
    List<Frame> result = new ArrayList<Frame>();
    result.add(frame);
    return result;
  }