2014-11-27 20:39:05 +08:00
|
|
|
Feature Detection {#tutorial_feature_detection}
|
|
|
|
=================
|
|
|
|
|
2020-12-08 00:13:54 +08:00
|
|
|
@tableofcontents
|
|
|
|
|
2020-05-20 06:59:28 +08:00
|
|
|
@prev_tutorial{tutorial_corner_subpixels}
|
|
|
|
@next_tutorial{tutorial_feature_description}
|
|
|
|
|
2020-12-05 06:46:00 +08:00
|
|
|
| | |
|
|
|
|
| -: | :- |
|
|
|
|
| Original author | Ana Huamán |
|
|
|
|
| Compatibility | OpenCV >= 3.0 |
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
Goal
|
|
|
|
----
|
|
|
|
|
|
|
|
In this tutorial you will learn how to:
|
|
|
|
|
|
|
|
- Use the @ref cv::FeatureDetector interface in order to find interest points. Specifically:
|
2014-12-02 00:22:04 +08:00
|
|
|
- Use the cv::xfeatures2d::SURF and its function cv::xfeatures2d::SURF::detect to perform the
|
2014-11-27 20:39:05 +08:00
|
|
|
detection process
|
|
|
|
- Use the function @ref cv::drawKeypoints to draw the detected keypoints
|
|
|
|
|
2018-05-28 07:33:56 +08:00
|
|
|
\warning You need the <a href="https://github.com/opencv/opencv_contrib">OpenCV contrib modules</a> to be able to use the SURF features
|
|
|
|
(alternatives are ORB, KAZE, ... features).
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
Theory
|
|
|
|
------
|
|
|
|
|
|
|
|
Code
|
|
|
|
----
|
|
|
|
|
2018-05-28 07:33:56 +08:00
|
|
|
@add_toggle_cpp
|
|
|
|
This tutorial code's is shown lines below. You can also download it from
|
2018-06-05 00:24:09 +08:00
|
|
|
[here](https://github.com/opencv/opencv/tree/master/samples/cpp/tutorial_code/features2D/feature_detection/SURF_detection_Demo.cpp)
|
2018-05-28 07:33:56 +08:00
|
|
|
@include samples/cpp/tutorial_code/features2D/feature_detection/SURF_detection_Demo.cpp
|
|
|
|
@end_toggle
|
2014-11-27 20:39:05 +08:00
|
|
|
|
2018-05-28 07:33:56 +08:00
|
|
|
@add_toggle_java
|
|
|
|
This tutorial code's is shown lines below. You can also download it from
|
2018-06-05 00:24:09 +08:00
|
|
|
[here](https://github.com/opencv/opencv/tree/master/samples/java/tutorial_code/features2D/feature_detection/SURFDetectionDemo.java)
|
2018-05-28 07:33:56 +08:00
|
|
|
@include samples/java/tutorial_code/features2D/feature_detection/SURFDetectionDemo.java
|
|
|
|
@end_toggle
|
2014-11-27 20:39:05 +08:00
|
|
|
|
2018-05-28 07:33:56 +08:00
|
|
|
@add_toggle_python
|
|
|
|
This tutorial code's is shown lines below. You can also download it from
|
2018-06-05 00:24:09 +08:00
|
|
|
[here](https://github.com/opencv/opencv/tree/master/samples/python/tutorial_code/features2D/feature_detection/SURF_detection_Demo.py)
|
2018-05-28 07:33:56 +08:00
|
|
|
@include samples/python/tutorial_code/features2D/feature_detection/SURF_detection_Demo.py
|
|
|
|
@end_toggle
|
2014-11-28 00:54:13 +08:00
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
Explanation
|
|
|
|
-----------
|
|
|
|
|
|
|
|
Result
|
|
|
|
------
|
|
|
|
|
2018-05-28 07:33:56 +08:00
|
|
|
-# Here is the result of the feature detection applied to the `box.png` image:
|
2014-11-27 20:39:05 +08:00
|
|
|
|
2014-11-28 21:21:28 +08:00
|
|
|
![](images/Feature_Detection_Result_a.jpg)
|
2014-11-27 20:39:05 +08:00
|
|
|
|
2018-05-28 07:33:56 +08:00
|
|
|
-# And here is the result for the `box_in_scene.png` image:
|
2014-11-27 20:39:05 +08:00
|
|
|
|
2014-11-28 21:21:28 +08:00
|
|
|
![](images/Feature_Detection_Result_b.jpg)
|