content: 
  //
  // This file is auto-generated. Please don't modify it!
  //
  package org.opencv.ml;
  
  import org.opencv.core.Mat;
  
  // C++: class CvKNearest
  /**
   * <p>The class implements K-Nearest Neighbors model as described in the beginning
   * of this section.</p>
   *
   * <p>Note:</p>
   * <ul>
   *   <li> (Python) An example of digit recognition using KNearest can be found
   * at opencv_source/samples/python2/digits.py
   *   <li> (Python) An example of grid search digit recognition using KNearest
   * can be found at opencv_source/samples/python2/digits_adjust.py
   *   <li> (Python) An example of video digit recognition using KNearest can be
   * found at opencv_source/samples/python2/digits_video.py
   * </ul>
   *
   * @see <a href="http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html#cvknearest">org.opencv.ml.CvKNearest : public CvStatModel</a>
   */
  public class CvKNearest extends CvStatModel {
  
      protected CvKNearest(long addr) { super(addr); }
  
  
      //
      // C++:   CvKNearest::CvKNearest()
      //
  
  /**
   * <p>Default and training constructors.</p>
   *
   * <p>See "CvKNearest.train" for additional parameters descriptions.</p>
   *
   * @see <a href="http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html#cvknearest-cvknearest">org.opencv.ml.CvKNearest.CvKNearest</a>
   */
      public   CvKNearest()
      {
  
          super( CvKNearest_0() );
  
          return;
      }
  
  
      //
      // C++:   CvKNearest::CvKNearest(Mat trainData, Mat responses, Mat sampleIdx = cv::Mat(), bool isRegression = false, int max_k = 32)
      //
  
  /**
   * <p>Default and training constructors.</p>
   *
   * <p>See "CvKNearest.train" for additional parameters descriptions.</p>
   *
   * @param trainData a trainData
   * @param responses a responses
   * @param sampleIdx a sampleIdx
   * @param isRegression a isRegression
   * @param max_k a max_k
   *
   * @see <a href="http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html#cvknearest-cvknearest">org.opencv.ml.CvKNearest.CvKNearest</a>
   */
      public   CvKNearest(Mat trainData, Mat responses, Mat sampleIdx, boolean isRegression, int max_k)
      {
  
          super( CvKNearest_1(trainData.nativeObj, responses.nativeObj, sampleIdx.nativeObj, isRegression, max_k) );
  
          return;
      }
  
  /**
   * <p>Default and training constructors.</p>
   *
   * <p>See "CvKNearest.train" for additional parameters descriptions.</p>
   *
   * @param trainData a trainData
   * @param responses a responses
   *
   * @see <a href="http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html#cvknearest-cvknearest">org.opencv.ml.CvKNearest.CvKNearest</a>
   */
      public   CvKNearest(Mat trainData, Mat responses)
      {
  
          super( CvKNearest_2(trainData.nativeObj, responses.nativeObj) );
  
          return;
      }
  
  
      //
      // C++:  float CvKNearest::find_nearest(Mat samples, int k, Mat& results, Mat& neighborResponses, Mat& dists)
      //
  
  /**
   * <p>Finds the neighbors and predicts responses for input vectors.</p>
   *
   * <p>For each input vector (a row of the matrix <code>samples</code>), the method
   * finds the <code>k</code> nearest neighbors. In case of regression, the
   * predicted result is a mean value of the particular vector's neighbor
   * responses. In case of classification, the class is determined by voting.</p>
   *
   * <p>For each input vector, the neighbors are sorted by their distances to the
   * vector.</p>
   *
   * <p>In case of C++ interface you can use output pointers to empty matrices and
   * the function will allocate memory itself.</p>
   *
   * <p>If only a single input vector is passed, all output matrices are optional and
   * the predicted value is returned by the method.</p>
   *
   * <p>The function is parallelized with the TBB library.</p>
   *
   * @param samples Input samples stored by rows. It is a single-precision
   * floating-point matrix of <em>number_of_samples x number_of_features</em>
   * size.
   * @param k Number of used nearest neighbors. It must satisfy constraint: <em>k
   * <= </em> "CvKNearest.get_max_k".
   * @param results Vector with results of prediction (regression or
   * classification) for each input sample. It is a single-precision
   * floating-point vector with <code>number_of_samples</code> elements.
   * @param neighborResponses Optional output values for corresponding
   * <code>neighbors</code>. It is a single-precision floating-point matrix of
   * <em>number_of_samples x k</em> size.
   * @param dists a dists
   *
   * @see <a href="http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html#cvknearest-find-nearest">org.opencv.ml.CvKNearest.find_nearest</a>
   */
      public  float find_nearest(Mat samples, int k, Mat results, Mat neighborResponses, Mat dists)
      {
  
          float retVal = find_nearest_0(nativeObj, samples.nativeObj, k, results.nativeObj, neighborResponses.nativeObj, dists.nativeObj);
  
          return retVal;
      }
  
  
      //
      // C++:  bool CvKNearest::train(Mat trainData, Mat responses, Mat sampleIdx = cv::Mat(), bool isRegression = false, int maxK = 32, bool updateBase = false)
      //
  
  /**
   * <p>Trains the model.</p>
   *
   * <p>The method trains the K-Nearest model. It follows the conventions of the
   * generic "CvStatModel.train" approach with the following limitations:</p>
   * <ul>
   *   <li> Only <code>CV_ROW_SAMPLE</code> data layout is supported.
   *   <li> Input variables are all ordered.
   *   <li> Output variables can be either categorical (<code>is_regression=false</code>)
   * or ordered (<code>is_regression=true</code>).
   *   <li> Variable subsets (<code>var_idx</code>) and missing measurements are
   * not supported.
   * </ul>
   *
   * @param trainData a trainData
   * @param responses a responses
   * @param sampleIdx a sampleIdx
   * @param isRegression Type of the problem: <code>true</code> for regression and
   * <code>false</code> for classification.
   * @param maxK Number of maximum neighbors that may be passed to the method
   * "CvKNearest.find_nearest".
   * @param updateBase Specifies whether the model is trained from scratch
   * (<code>update_base=false</code>), or it is updated using the new training
   * data (<code>update_base=true</code>). In the latter case, the parameter
   * <code>maxK</code> must not be larger than the original value.
   *
   * @see <a href="http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html#cvknearest-train">org.opencv.ml.CvKNearest.train</a>
   */
      public  boolean train(Mat trainData, Mat responses, Mat sampleIdx, boolean isRegression, int maxK, boolean updateBase)
      {
  
          boolean retVal = train_0(nativeObj, trainData.nativeObj, responses.nativeObj, sampleIdx.nativeObj, isRegression, maxK, updateBase);
  
          return retVal;
      }
  
  /**
   * <p>Trains the model.</p>
   *
   * <p>The method trains the K-Nearest model. It follows the conventions of the
   * generic "CvStatModel.train" approach with the following limitations:</p>
   * <ul>
   *   <li> Only <code>CV_ROW_SAMPLE</code> data layout is supported.
   *   <li> Input variables are all ordered.
   *   <li> Output variables can be either categorical (<code>is_regression=false</code>)
   * or ordered (<code>is_regression=true</code>).
   *   <li> Variable subsets (<code>var_idx</code>) and missing measurements are
   * not supported.
   * </ul>
   *
   * @param trainData a trainData
   * @param responses a responses
   *
   * @see <a href="http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html#cvknearest-train">org.opencv.ml.CvKNearest.train</a>
   */
      public  boolean train(Mat trainData, Mat responses)
      {
  
          boolean retVal = train_1(nativeObj, trainData.nativeObj, responses.nativeObj);
  
          return retVal;
      }
  
  
      @Override
      protected void finalize() throws Throwable {
          delete(nativeObj);
      }
  
  
  
      // C++:   CvKNearest::CvKNearest()
      private static native long CvKNearest_0();
  
      // C++:   CvKNearest::CvKNearest(Mat trainData, Mat responses, Mat sampleIdx = cv::Mat(), bool isRegression = false, int max_k = 32)
      private static native long CvKNearest_1(long trainData_nativeObj, long responses_nativeObj, long sampleIdx_nativeObj, boolean isRegression, int max_k);
      private static native long CvKNearest_2(long trainData_nativeObj, long responses_nativeObj);
  
      // C++:  float CvKNearest::find_nearest(Mat samples, int k, Mat& results, Mat& neighborResponses, Mat& dists)
      private static native float find_nearest_0(long nativeObj, long samples_nativeObj, int k, long results_nativeObj, long neighborResponses_nativeObj, long dists_nativeObj);
  
      // C++:  bool CvKNearest::train(Mat trainData, Mat responses, Mat sampleIdx = cv::Mat(), bool isRegression = false, int maxK = 32, bool updateBase = false)
      private static native boolean train_0(long nativeObj, long trainData_nativeObj, long responses_nativeObj, long sampleIdx_nativeObj, boolean isRegression, int maxK, boolean updateBase);
      private static native boolean train_1(long nativeObj, long trainData_nativeObj, long responses_nativeObj);
  
      // native support for java finalize()
      private static native void delete(long nativeObj);
  
  }
  