/**
   * Конструктор по умолчанию (параметризованный).
   *
   * @param cascadeName имя файла каскада Хаара.
   */
  public HaarObjectDetectorParameters(String cascadeName) {

    this.cascadeName = cascadeName;

    cascade = HaarCascadeHelper.loadHaarCascade(this.cascadeName);

    if (cascade == null) {

      throw new RuntimeException();
    }
  }
Beispiel #2
0
  /**
   * Этот метод возвращает каскад Хаара в указанном масштабе.
   *
   * @param scale масштаб.
   * @return HaarCascade
   *     <p>Метод старается использовать кеш.
   *     <p>При выборе элемента из кеша используется точное сравнение масштаба.
   *     <p>Если элемента с указанным масштабом нет, он создается и добавляется в кеш.
   *     <p>todo Реализовать приближенное сравнение масштаба?
   */
  public HaarCascade getHaarCascade(double scale) {

    for (CacheItem x : cache) {

      if (x.scale == scale) {

        return x.cascade;
      }
    }

    LOG.debug(String.format("Scale %f not found in cache!", scale));

    final HaarCascade r = HaarCascadeHelper.scaleHaarCascade(params.cascade, scale);

    cache.add(new CacheItem(scale, r));

    LOG.debug(String.format("Scale %f added.", scale));

    return r;
  }