001//
002// This file is auto-generated. Please don't modify it!
003//
004package org.opencv.features2d;
005
006import java.util.ArrayList;
007import java.util.List;
008import org.opencv.core.Algorithm;
009import org.opencv.core.Mat;
010import org.opencv.core.MatOfKeyPoint;
011import org.opencv.utils.Converters;
012
013// C++: class Feature2D
014/**
015 * Abstract base class for 2D image feature detectors and descriptor extractors
016 */
017public class Feature2D extends Algorithm {
018
019    protected Feature2D(long addr) { super(addr); }
020
021    // internal usage only
022    public static Feature2D __fromPtr__(long addr) { return new Feature2D(addr); }
023
024    //
025    // C++:  void cv::Feature2D::detect(Mat image, vector_KeyPoint& keypoints, Mat mask = Mat())
026    //
027
028    /**
029     * Detects keypoints in an image (first variant) or image set (second variant).
030     *
031     *     @param image Image.
032     *     @param keypoints The detected keypoints. In the second variant of the method keypoints[i] is a set
033     *     of keypoints detected in images[i] .
034     *     @param mask Mask specifying where to look for keypoints (optional). It must be a 8-bit integer
035     *     matrix with non-zero values in the region of interest.
036     */
037    public void detect(Mat image, MatOfKeyPoint keypoints, Mat mask) {
038        Mat keypoints_mat = keypoints;
039        detect_0(nativeObj, image.nativeObj, keypoints_mat.nativeObj, mask.nativeObj);
040    }
041
042    /**
043     * Detects keypoints in an image (first variant) or image set (second variant).
044     *
045     *     @param image Image.
046     *     @param keypoints The detected keypoints. In the second variant of the method keypoints[i] is a set
047     *     of keypoints detected in images[i] .
048     *     matrix with non-zero values in the region of interest.
049     */
050    public void detect(Mat image, MatOfKeyPoint keypoints) {
051        Mat keypoints_mat = keypoints;
052        detect_1(nativeObj, image.nativeObj, keypoints_mat.nativeObj);
053    }
054
055
056    //
057    // C++:  void cv::Feature2D::detect(vector_Mat images, vector_vector_KeyPoint& keypoints, vector_Mat masks = vector_Mat())
058    //
059
060    /**
061     *
062     *     @param images Image set.
063     *     @param keypoints The detected keypoints. In the second variant of the method keypoints[i] is a set
064     *     of keypoints detected in images[i] .
065     *     @param masks Masks for each input image specifying where to look for keypoints (optional).
066     *     masks[i] is a mask for images[i].
067     */
068    public void detect(List<Mat> images, List<MatOfKeyPoint> keypoints, List<Mat> masks) {
069        Mat images_mat = Converters.vector_Mat_to_Mat(images);
070        Mat keypoints_mat = new Mat();
071        Mat masks_mat = Converters.vector_Mat_to_Mat(masks);
072        detect_2(nativeObj, images_mat.nativeObj, keypoints_mat.nativeObj, masks_mat.nativeObj);
073        Converters.Mat_to_vector_vector_KeyPoint(keypoints_mat, keypoints);
074        keypoints_mat.release();
075    }
076
077    /**
078     *
079     *     @param images Image set.
080     *     @param keypoints The detected keypoints. In the second variant of the method keypoints[i] is a set
081     *     of keypoints detected in images[i] .
082     *     masks[i] is a mask for images[i].
083     */
084    public void detect(List<Mat> images, List<MatOfKeyPoint> keypoints) {
085        Mat images_mat = Converters.vector_Mat_to_Mat(images);
086        Mat keypoints_mat = new Mat();
087        detect_3(nativeObj, images_mat.nativeObj, keypoints_mat.nativeObj);
088        Converters.Mat_to_vector_vector_KeyPoint(keypoints_mat, keypoints);
089        keypoints_mat.release();
090    }
091
092
093    //
094    // C++:  void cv::Feature2D::compute(Mat image, vector_KeyPoint& keypoints, Mat& descriptors)
095    //
096
097    /**
098     * Computes the descriptors for a set of keypoints detected in an image (first variant) or image set
099     *     (second variant).
100     *
101     *     @param image Image.
102     *     @param keypoints Input collection of keypoints. Keypoints for which a descriptor cannot be
103     *     computed are removed. Sometimes new keypoints can be added, for example: SIFT duplicates keypoint
104     *     with several dominant orientations (for each orientation).
105     *     @param descriptors Computed descriptors. In the second variant of the method descriptors[i] are
106     *     descriptors computed for a keypoints[i]. Row j is the keypoints (or keypoints[i]) is the
107     *     descriptor for keypoint j-th keypoint.
108     */
109    public void compute(Mat image, MatOfKeyPoint keypoints, Mat descriptors) {
110        Mat keypoints_mat = keypoints;
111        compute_0(nativeObj, image.nativeObj, keypoints_mat.nativeObj, descriptors.nativeObj);
112    }
113
114
115    //
116    // C++:  void cv::Feature2D::compute(vector_Mat images, vector_vector_KeyPoint& keypoints, vector_Mat& descriptors)
117    //
118
119    /**
120     *
121     *
122     *     @param images Image set.
123     *     @param keypoints Input collection of keypoints. Keypoints for which a descriptor cannot be
124     *     computed are removed. Sometimes new keypoints can be added, for example: SIFT duplicates keypoint
125     *     with several dominant orientations (for each orientation).
126     *     @param descriptors Computed descriptors. In the second variant of the method descriptors[i] are
127     *     descriptors computed for a keypoints[i]. Row j is the keypoints (or keypoints[i]) is the
128     *     descriptor for keypoint j-th keypoint.
129     */
130    public void compute(List<Mat> images, List<MatOfKeyPoint> keypoints, List<Mat> descriptors) {
131        Mat images_mat = Converters.vector_Mat_to_Mat(images);
132        List<Mat> keypoints_tmplm = new ArrayList<Mat>((keypoints != null) ? keypoints.size() : 0);
133        Mat keypoints_mat = Converters.vector_vector_KeyPoint_to_Mat(keypoints, keypoints_tmplm);
134        Mat descriptors_mat = new Mat();
135        compute_1(nativeObj, images_mat.nativeObj, keypoints_mat.nativeObj, descriptors_mat.nativeObj);
136        Converters.Mat_to_vector_vector_KeyPoint(keypoints_mat, keypoints);
137        keypoints_mat.release();
138        Converters.Mat_to_vector_Mat(descriptors_mat, descriptors);
139        descriptors_mat.release();
140    }
141
142
143    //
144    // C++:  void cv::Feature2D::detectAndCompute(Mat image, Mat mask, vector_KeyPoint& keypoints, Mat& descriptors, bool useProvidedKeypoints = false)
145    //
146
147    /**
148     * Detects keypoints and computes the descriptors
149     * @param image automatically generated
150     * @param mask automatically generated
151     * @param keypoints automatically generated
152     * @param descriptors automatically generated
153     * @param useProvidedKeypoints automatically generated
154     */
155    public void detectAndCompute(Mat image, Mat mask, MatOfKeyPoint keypoints, Mat descriptors, boolean useProvidedKeypoints) {
156        Mat keypoints_mat = keypoints;
157        detectAndCompute_0(nativeObj, image.nativeObj, mask.nativeObj, keypoints_mat.nativeObj, descriptors.nativeObj, useProvidedKeypoints);
158    }
159
160    /**
161     * Detects keypoints and computes the descriptors
162     * @param image automatically generated
163     * @param mask automatically generated
164     * @param keypoints automatically generated
165     * @param descriptors automatically generated
166     */
167    public void detectAndCompute(Mat image, Mat mask, MatOfKeyPoint keypoints, Mat descriptors) {
168        Mat keypoints_mat = keypoints;
169        detectAndCompute_1(nativeObj, image.nativeObj, mask.nativeObj, keypoints_mat.nativeObj, descriptors.nativeObj);
170    }
171
172
173    //
174    // C++:  int cv::Feature2D::descriptorSize()
175    //
176
177    public int descriptorSize() {
178        return descriptorSize_0(nativeObj);
179    }
180
181
182    //
183    // C++:  int cv::Feature2D::descriptorType()
184    //
185
186    public int descriptorType() {
187        return descriptorType_0(nativeObj);
188    }
189
190
191    //
192    // C++:  int cv::Feature2D::defaultNorm()
193    //
194
195    public int defaultNorm() {
196        return defaultNorm_0(nativeObj);
197    }
198
199
200    //
201    // C++:  void cv::Feature2D::write(String fileName)
202    //
203
204    public void write(String fileName) {
205        write_0(nativeObj, fileName);
206    }
207
208
209    //
210    // C++:  void cv::Feature2D::read(String fileName)
211    //
212
213    public void read(String fileName) {
214        read_0(nativeObj, fileName);
215    }
216
217
218    //
219    // C++:  void cv::Feature2D::read(FileNode arg1)
220    //
221
222    // Unknown type 'FileNode' (I), skipping the function
223
224
225    //
226    // C++:  bool cv::Feature2D::empty()
227    //
228
229    public boolean empty() {
230        return empty_0(nativeObj);
231    }
232
233
234    //
235    // C++:  String cv::Feature2D::getDefaultName()
236    //
237
238    public String getDefaultName() {
239        return getDefaultName_0(nativeObj);
240    }
241
242
243    //
244    // C++:  void cv::Feature2D::write(FileStorage fs, String name)
245    //
246
247    // Unknown type 'FileStorage' (I), skipping the function
248
249
250    @Override
251    protected void finalize() throws Throwable {
252        delete(nativeObj);
253    }
254
255
256
257    // C++:  void cv::Feature2D::detect(Mat image, vector_KeyPoint& keypoints, Mat mask = Mat())
258    private static native void detect_0(long nativeObj, long image_nativeObj, long keypoints_mat_nativeObj, long mask_nativeObj);
259    private static native void detect_1(long nativeObj, long image_nativeObj, long keypoints_mat_nativeObj);
260
261    // C++:  void cv::Feature2D::detect(vector_Mat images, vector_vector_KeyPoint& keypoints, vector_Mat masks = vector_Mat())
262    private static native void detect_2(long nativeObj, long images_mat_nativeObj, long keypoints_mat_nativeObj, long masks_mat_nativeObj);
263    private static native void detect_3(long nativeObj, long images_mat_nativeObj, long keypoints_mat_nativeObj);
264
265    // C++:  void cv::Feature2D::compute(Mat image, vector_KeyPoint& keypoints, Mat& descriptors)
266    private static native void compute_0(long nativeObj, long image_nativeObj, long keypoints_mat_nativeObj, long descriptors_nativeObj);
267
268    // C++:  void cv::Feature2D::compute(vector_Mat images, vector_vector_KeyPoint& keypoints, vector_Mat& descriptors)
269    private static native void compute_1(long nativeObj, long images_mat_nativeObj, long keypoints_mat_nativeObj, long descriptors_mat_nativeObj);
270
271    // C++:  void cv::Feature2D::detectAndCompute(Mat image, Mat mask, vector_KeyPoint& keypoints, Mat& descriptors, bool useProvidedKeypoints = false)
272    private static native void detectAndCompute_0(long nativeObj, long image_nativeObj, long mask_nativeObj, long keypoints_mat_nativeObj, long descriptors_nativeObj, boolean useProvidedKeypoints);
273    private static native void detectAndCompute_1(long nativeObj, long image_nativeObj, long mask_nativeObj, long keypoints_mat_nativeObj, long descriptors_nativeObj);
274
275    // C++:  int cv::Feature2D::descriptorSize()
276    private static native int descriptorSize_0(long nativeObj);
277
278    // C++:  int cv::Feature2D::descriptorType()
279    private static native int descriptorType_0(long nativeObj);
280
281    // C++:  int cv::Feature2D::defaultNorm()
282    private static native int defaultNorm_0(long nativeObj);
283
284    // C++:  void cv::Feature2D::write(String fileName)
285    private static native void write_0(long nativeObj, String fileName);
286
287    // C++:  void cv::Feature2D::read(String fileName)
288    private static native void read_0(long nativeObj, String fileName);
289
290    // C++:  bool cv::Feature2D::empty()
291    private static native boolean empty_0(long nativeObj);
292
293    // C++:  String cv::Feature2D::getDefaultName()
294    private static native String getDefaultName_0(long nativeObj);
295
296    // native support for java finalize()
297    private static native void delete(long nativeObj);
298
299}