// // 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); }