Merge pull request #26405 from kaingwade:rename_features2d

Rename features2d #26405

This PR renames the module _features2d_ to _features_ as one of the Big OpenCV Cleanup #25007. 
Related PR: opencv/opencv_contrib: [#3820](https://github.com/opencv/opencv_contrib/pull/3820) opencv/ci-gha-workflow: [#192](https://github.com/opencv/ci-gha-workflow/pull/192)
This commit is contained in:
WU Jia 2024-11-12 16:04:48 +08:00 committed by GitHub
parent c7a21dc5bf
commit 614e250fd3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
260 changed files with 273 additions and 268 deletions

View File

@ -23,7 +23,7 @@ target_include_directories(ndsrvp_hal PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/modules/core/include
${CMAKE_SOURCE_DIR}/modules/imgproc/include
${CMAKE_SOURCE_DIR}/modules/features2d/include)
${CMAKE_SOURCE_DIR}/modules/features/include)
# project info

View File

@ -1,3 +1,3 @@
set(DEPS opencv_core opencv_imgproc opencv_features2d opencv_highgui opencv_3d opencv_calib opencv_videoio opencv_objdetect)
set(DEPS opencv_core opencv_imgproc opencv_features opencv_highgui opencv_3d opencv_calib opencv_videoio opencv_objdetect)
file(GLOB SRCS *.cpp)
ocv_add_application(opencv_interactive-calibration MODULES ${DEPS} SRCS ${SRCS})

View File

@ -421,7 +421,7 @@ macro(ocv_register_modules)
endforeach()
ocv_list_sort(OPENCV_MODULES_MAIN)
ocv_list_sort(OPENCV_MODULES_EXTRA)
set(FIXED_ORDER_MODULES core imgproc imgcodecs videoio highgui video 3d stereo features2d calib objdetect dnn ml flann photo stitching)
set(FIXED_ORDER_MODULES core imgproc imgcodecs videoio highgui video 3d stereo features calib objdetect dnn ml flann photo stitching)
list(REMOVE_ITEM OPENCV_MODULES_MAIN ${FIXED_ORDER_MODULES})
set(OPENCV_MODULES_MAIN ${FIXED_ORDER_MODULES} ${OPENCV_MODULES_MAIN})

View File

@ -123,7 +123,7 @@ endif()
set(STD_OPENCV_LIBS opencv-data)
set(STD_OPENCV_DEV libopencv-dev)
foreach(module 3d calib core dnn features2d flann gapi highgui
foreach(module 3d calib core dnn features flann gapi highgui
imgcodecs imgproc ml objdetect
photo stereo stitching ts video videoio)
if(HAVE_opencv_${module})

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -52,7 +52,7 @@ choice in low-power devices for panorama stitching etc.
ORB in OpenCV
-------------
As usual, we have to create an ORB object with the function, **cv.ORB()** or using feature2d common
As usual, we have to create an ORB object with the function, **cv.ORB()** or using features common
interface. It has a number of optional parameters. Most useful ones are nFeatures which denotes
maximum number of features to be retained (by default 500), scoreType which denotes whether Harris
score or FAST score to rank the features (by default, Harris score) etc. Another parameter, WTA_K

View File

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -1,4 +1,4 @@
Feature Detection and Description {#tutorial_py_table_of_contents_feature2d}
Feature Detection and Description {#tutorial_py_table_of_contents_features}
=================================
- @subpage tutorial_py_features_meaning

View File

@ -20,7 +20,7 @@ OpenCV-Python Tutorials {#tutorial_py_root}
In this section
you will learn different image processing functions inside OpenCV.
- @subpage tutorial_py_table_of_contents_feature2d
- @subpage tutorial_py_table_of_contents_features
In this section
you will learn about feature detectors and descriptors

View File

@ -44,26 +44,26 @@ You can find the images (*graf1.png*, *graf3.png*) and homography (*H1to3p.xml*)
@add_toggle_cpp
- **Downloadable code**: Click
[here](https://github.com/opencv/opencv/5.x/samples/cpp/tutorial_code/features2D/AKAZE_match.cpp)
[here](https://github.com/opencv/opencv/5.x/samples/cpp/tutorial_code/features/AKAZE_match.cpp)
- **Code at glance:**
@include samples/cpp/tutorial_code/features2D/AKAZE_match.cpp
@include samples/cpp/tutorial_code/features/AKAZE_match.cpp
@end_toggle
@add_toggle_java
- **Downloadable code**: Click
[here](https://github.com/opencv/opencv/5.x/samples/java/tutorial_code/features2D/akaze_matching/AKAZEMatchDemo.java)
[here](https://github.com/opencv/opencv/5.x/samples/java/tutorial_code/features/akaze_matching/AKAZEMatchDemo.java)
- **Code at glance:**
@include samples/java/tutorial_code/features2D/akaze_matching/AKAZEMatchDemo.java
@include samples/java/tutorial_code/features/akaze_matching/AKAZEMatchDemo.java
@end_toggle
@add_toggle_python
- **Downloadable code**: Click
[here](https://github.com/opencv/opencv/5.x/samples/python/tutorial_code/features2D/akaze_matching/AKAZE_match.py)
[here](https://github.com/opencv/opencv/5.x/samples/python/tutorial_code/features/akaze_matching/AKAZE_match.py)
- **Code at glance:**
@include samples/python/tutorial_code/features2D/akaze_matching/AKAZE_match.py
@include samples/python/tutorial_code/features/akaze_matching/AKAZE_match.py
@end_toggle
### Explanation
@ -71,15 +71,15 @@ You can find the images (*graf1.png*, *graf3.png*) and homography (*H1to3p.xml*)
- **Load images and homography**
@add_toggle_cpp
@snippet samples/cpp/tutorial_code/features2D/AKAZE_match.cpp load
@snippet samples/cpp/tutorial_code/features/AKAZE_match.cpp load
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/akaze_matching/AKAZEMatchDemo.java load
@snippet samples/java/tutorial_code/features/akaze_matching/AKAZEMatchDemo.java load
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/akaze_matching/AKAZE_match.py load
@snippet samples/python/tutorial_code/features/akaze_matching/AKAZE_match.py load
@end_toggle
We are loading grayscale images here. Homography is stored in the xml created with FileStorage.
@ -87,15 +87,15 @@ We are loading grayscale images here. Homography is stored in the xml created wi
- **Detect keypoints and compute descriptors using AKAZE**
@add_toggle_cpp
@snippet samples/cpp/tutorial_code/features2D/AKAZE_match.cpp AKAZE
@snippet samples/cpp/tutorial_code/features/AKAZE_match.cpp AKAZE
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/akaze_matching/AKAZEMatchDemo.java AKAZE
@snippet samples/java/tutorial_code/features/akaze_matching/AKAZEMatchDemo.java AKAZE
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/akaze_matching/AKAZE_match.py AKAZE
@snippet samples/python/tutorial_code/features/akaze_matching/AKAZE_match.py AKAZE
@end_toggle
We create AKAZE and detect and compute AKAZE keypoints and descriptors. Since we don't need the *mask*
@ -104,30 +104,30 @@ parameter, *noArray()* is used.
- **Use brute-force matcher to find 2-nn matches**
@add_toggle_cpp
@snippet samples/cpp/tutorial_code/features2D/AKAZE_match.cpp 2-nn matching
@snippet samples/cpp/tutorial_code/features/AKAZE_match.cpp 2-nn matching
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/akaze_matching/AKAZEMatchDemo.java 2-nn matching
@snippet samples/java/tutorial_code/features/akaze_matching/AKAZEMatchDemo.java 2-nn matching
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/akaze_matching/AKAZE_match.py 2-nn matching
@snippet samples/python/tutorial_code/features/akaze_matching/AKAZE_match.py 2-nn matching
@end_toggle
We use Hamming distance, because AKAZE uses binary descriptor by default.
- **Use 2-nn matches and ratio criterion to find correct keypoint matches**
@add_toggle_cpp
@snippet samples/cpp/tutorial_code/features2D/AKAZE_match.cpp ratio test filtering
@snippet samples/cpp/tutorial_code/features/AKAZE_match.cpp ratio test filtering
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/akaze_matching/AKAZEMatchDemo.java ratio test filtering
@snippet samples/java/tutorial_code/features/akaze_matching/AKAZEMatchDemo.java ratio test filtering
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/akaze_matching/AKAZE_match.py ratio test filtering
@snippet samples/python/tutorial_code/features/akaze_matching/AKAZE_match.py ratio test filtering
@end_toggle
If the closest match distance is significantly lower than the second closest one, then the match is correct (match is not ambiguous).
@ -135,15 +135,15 @@ If the closest match distance is significantly lower than the second closest one
- **Check if our matches fit in the homography model**
@add_toggle_cpp
@snippet samples/cpp/tutorial_code/features2D/AKAZE_match.cpp homography check
@snippet samples/cpp/tutorial_code/features/AKAZE_match.cpp homography check
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/akaze_matching/AKAZEMatchDemo.java homography check
@snippet samples/java/tutorial_code/features/akaze_matching/AKAZEMatchDemo.java homography check
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/akaze_matching/AKAZE_match.py homography check
@snippet samples/python/tutorial_code/features/akaze_matching/AKAZE_match.py homography check
@end_toggle
If the distance from first keypoint's projection to the second keypoint is less than threshold,
@ -154,15 +154,15 @@ We create a new set of matches for the inliers, because it is required by the dr
- **Output results**
@add_toggle_cpp
@snippet samples/cpp/tutorial_code/features2D/AKAZE_match.cpp draw final matches
@snippet samples/cpp/tutorial_code/features/AKAZE_match.cpp draw final matches
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/akaze_matching/AKAZEMatchDemo.java draw final matches
@snippet samples/java/tutorial_code/features/akaze_matching/AKAZEMatchDemo.java draw final matches
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/akaze_matching/AKAZE_match.py draw final matches
@snippet samples/python/tutorial_code/features/akaze_matching/AKAZE_match.py draw final matches
@end_toggle
Here we save the resulting image and print some statistics.

View File

Before

Width:  |  Height:  |  Size: 2.0 MiB

After

Width:  |  Height:  |  Size: 2.0 MiB

View File

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

@ -48,7 +48,7 @@ To run the code you have to specify input (camera id or video_file). Then, selec
Source Code
-----------
@include cpp/tutorial_code/features2D/AKAZE_tracking/planar_tracking.cpp
@include cpp/tutorial_code/features/AKAZE_tracking/planar_tracking.cpp
Explanation
-----------

View File

Before

Width:  |  Height:  |  Size: 318 KiB

After

Width:  |  Height:  |  Size: 318 KiB

View File

@ -11,7 +11,7 @@ Detection of planar objects {#tutorial_detection_of_planar_objects}
| Original author | Victor Eruhimov |
| Compatibility | OpenCV >= 3.0 |
The goal of this tutorial is to learn how to use *features2d* and *calib3d* modules for detecting
The goal of this tutorial is to learn how to use *features* and *calib3d* modules for detecting
known planar objects in scenes.
*Test data*: use images in your data folder, for instance, box.png and box_in_scene.png.

View File

@ -34,20 +34,20 @@ Code
@add_toggle_cpp
This tutorial code's is shown lines below. You can also download it from
[here](https://github.com/opencv/opencv/tree/5.x/samples/cpp/tutorial_code/features2D/feature_description/SURF_matching_Demo.cpp)
@include samples/cpp/tutorial_code/features2D/feature_description/SURF_matching_Demo.cpp
[here](https://github.com/opencv/opencv/tree/5.x/samples/cpp/tutorial_code/features/feature_description/SURF_matching_Demo.cpp)
@include samples/cpp/tutorial_code/features/feature_description/SURF_matching_Demo.cpp
@end_toggle
@add_toggle_java
This tutorial code's is shown lines below. You can also download it from
[here](https://github.com/opencv/opencv/tree/5.x/samples/java/tutorial_code/features2D/feature_description/SURFMatchingDemo.java)
@include samples/java/tutorial_code/features2D/feature_description/SURFMatchingDemo.java
[here](https://github.com/opencv/opencv/tree/5.x/samples/java/tutorial_code/features/feature_description/SURFMatchingDemo.java)
@include samples/java/tutorial_code/features/feature_description/SURFMatchingDemo.java
@end_toggle
@add_toggle_python
This tutorial code's is shown lines below. You can also download it from
[here](https://github.com/opencv/opencv/tree/5.x/samples/python/tutorial_code/features2D/feature_description/SURF_matching_Demo.py)
@include samples/python/tutorial_code/features2D/feature_description/SURF_matching_Demo.py
[here](https://github.com/opencv/opencv/tree/5.x/samples/python/tutorial_code/features/feature_description/SURF_matching_Demo.py)
@include samples/python/tutorial_code/features/feature_description/SURF_matching_Demo.py
@end_toggle
Explanation

View File

@ -32,20 +32,20 @@ Code
@add_toggle_cpp
This tutorial code's is shown lines below. You can also download it from
[here](https://github.com/opencv/opencv/tree/5.x/samples/cpp/tutorial_code/features2D/feature_detection/SURF_detection_Demo.cpp)
@include samples/cpp/tutorial_code/features2D/feature_detection/SURF_detection_Demo.cpp
[here](https://github.com/opencv/opencv/tree/5.x/samples/cpp/tutorial_code/features/feature_detection/SURF_detection_Demo.cpp)
@include samples/cpp/tutorial_code/features/feature_detection/SURF_detection_Demo.cpp
@end_toggle
@add_toggle_java
This tutorial code's is shown lines below. You can also download it from
[here](https://github.com/opencv/opencv/tree/5.x/samples/java/tutorial_code/features2D/feature_detection/SURFDetectionDemo.java)
@include samples/java/tutorial_code/features2D/feature_detection/SURFDetectionDemo.java
[here](https://github.com/opencv/opencv/tree/5.x/samples/java/tutorial_code/features/feature_detection/SURFDetectionDemo.java)
@include samples/java/tutorial_code/features/feature_detection/SURFDetectionDemo.java
@end_toggle
@add_toggle_python
This tutorial code's is shown lines below. You can also download it from
[here](https://github.com/opencv/opencv/tree/5.x/samples/python/tutorial_code/features2D/feature_detection/SURF_detection_Demo.py)
@include samples/python/tutorial_code/features2D/feature_detection/SURF_detection_Demo.py
[here](https://github.com/opencv/opencv/tree/5.x/samples/python/tutorial_code/features/feature_detection/SURF_detection_Demo.py)
@include samples/python/tutorial_code/features/feature_detection/SURF_detection_Demo.py
@end_toggle
Explanation

View File

@ -55,20 +55,20 @@ Code
@add_toggle_cpp
This tutorial code's is shown lines below. You can also download it from
[here](https://github.com/opencv/opencv/tree/5.x/samples/cpp/tutorial_code/features2D/feature_flann_matcher/SURF_FLANN_matching_Demo.cpp)
@include samples/cpp/tutorial_code/features2D/feature_flann_matcher/SURF_FLANN_matching_Demo.cpp
[here](https://github.com/opencv/opencv/tree/5.x/samples/cpp/tutorial_code/features/feature_flann_matcher/SURF_FLANN_matching_Demo.cpp)
@include samples/cpp/tutorial_code/features/feature_flann_matcher/SURF_FLANN_matching_Demo.cpp
@end_toggle
@add_toggle_java
This tutorial code's is shown lines below. You can also download it from
[here](https://github.com/opencv/opencv/tree/5.x/samples/java/tutorial_code/features2D/feature_flann_matcher/SURFFLANNMatchingDemo.java)
@include samples/java/tutorial_code/features2D/feature_flann_matcher/SURFFLANNMatchingDemo.java
[here](https://github.com/opencv/opencv/tree/5.x/samples/java/tutorial_code/features/feature_flann_matcher/SURFFLANNMatchingDemo.java)
@include samples/java/tutorial_code/features/feature_flann_matcher/SURFFLANNMatchingDemo.java
@end_toggle
@add_toggle_python
This tutorial code's is shown lines below. You can also download it from
[here](https://github.com/opencv/opencv/tree/5.x/samples/python/tutorial_code/features2D/feature_flann_matcher/SURF_FLANN_matching_Demo.py)
@include samples/python/tutorial_code/features2D/feature_flann_matcher/SURF_FLANN_matching_Demo.py
[here](https://github.com/opencv/opencv/tree/5.x/samples/python/tutorial_code/features/feature_flann_matcher/SURF_FLANN_matching_Demo.py)
@include samples/python/tutorial_code/features/feature_flann_matcher/SURF_FLANN_matching_Demo.py
@end_toggle
Explanation

View File

@ -1,4 +1,4 @@
Features2D + Homography to find a known object {#tutorial_feature_homography}
Features + Homography to find a known object {#tutorial_feature_homography}
==============================================
@tableofcontents
@ -30,20 +30,20 @@ Code
@add_toggle_cpp
This tutorial code's is shown lines below. You can also download it from
[here](https://github.com/opencv/opencv/tree/5.x/samples/cpp/tutorial_code/features2D/feature_homography/SURF_FLANN_matching_homography_Demo.cpp)
@include samples/cpp/tutorial_code/features2D/feature_homography/SURF_FLANN_matching_homography_Demo.cpp
[here](https://github.com/opencv/opencv/tree/5.x/samples/cpp/tutorial_code/features/feature_homography/SURF_FLANN_matching_homography_Demo.cpp)
@include samples/cpp/tutorial_code/features/feature_homography/SURF_FLANN_matching_homography_Demo.cpp
@end_toggle
@add_toggle_java
This tutorial code's is shown lines below. You can also download it from
[here](https://github.com/opencv/opencv/tree/5.x/samples/java/tutorial_code/features2D/feature_homography/SURFFLANNMatchingHomographyDemo.java)
@include samples/java/tutorial_code/features2D/feature_homography/SURFFLANNMatchingHomographyDemo.java
[here](https://github.com/opencv/opencv/tree/5.x/samples/java/tutorial_code/features/feature_homography/SURFFLANNMatchingHomographyDemo.java)
@include samples/java/tutorial_code/features/feature_homography/SURFFLANNMatchingHomographyDemo.java
@end_toggle
@add_toggle_python
This tutorial code's is shown lines below. You can also download it from
[here](https://github.com/opencv/opencv/tree/5.x/samples/python/tutorial_code/features2D/feature_homography/SURF_FLANN_matching_homography_Demo.py)
@include samples/python/tutorial_code/features2D/feature_homography/SURF_FLANN_matching_homography_Demo.py
[here](https://github.com/opencv/opencv/tree/5.x/samples/python/tutorial_code/features/feature_homography/SURF_FLANN_matching_homography_Demo.py)
@include samples/python/tutorial_code/features/feature_homography/SURF_FLANN_matching_homography_Demo.py
@end_toggle
Explanation

View File

@ -22,9 +22,9 @@ For detailed explanations about the theory, please refer to a computer vision co
* Deeper understanding of the homography decomposition for vision-based control, Ezio Malis, Manuel Vargas, @cite Malis2007 (open access [here](https://hal.inria.fr/inria-00174036))
* Pose Estimation for Augmented Reality: A Hands-On Survey, Eric Marchand, Hideaki Uchiyama, Fabien Spindler, @cite Marchand16 (open access [here](https://hal.inria.fr/hal-01246370))
The tutorial code can be found here [C++](https://github.com/opencv/opencv/tree/5.x/samples/cpp/tutorial_code/features2D/Homography),
[Python](https://github.com/opencv/opencv/tree/5.x/samples/python/tutorial_code/features2D/Homography),
[Java](https://github.com/opencv/opencv/tree/5.x/samples/java/tutorial_code/features2D/Homography).
The tutorial code can be found here [C++](https://github.com/opencv/opencv/tree/5.x/samples/cpp/tutorial_code/features/Homography),
[Python](https://github.com/opencv/opencv/tree/5.x/samples/python/tutorial_code/features/Homography),
[Java](https://github.com/opencv/opencv/tree/5.x/samples/java/tutorial_code/features/Homography).
The images used in this tutorial can be found [here](https://github.com/opencv/opencv/tree/5.x/samples/data) (`left*.jpg`).
Basic theory {#tutorial_homography_Basic_theory}
@ -188,11 +188,11 @@ The first step consists to detect the chessboard corners in the source and desir
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/Homography/perspective_correction.py find-corners
@snippet samples/python/tutorial_code/features/Homography/perspective_correction.py find-corners
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/Homography/PerspectiveCorrection.java find-corners
@snippet samples/java/tutorial_code/features/Homography/PerspectiveCorrection.java find-corners
@end_toggle
The homography is estimated easily with:
@ -202,11 +202,11 @@ The homography is estimated easily with:
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/Homography/perspective_correction.py estimate-homography
@snippet samples/python/tutorial_code/features/Homography/perspective_correction.py estimate-homography
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/Homography/PerspectiveCorrection.java estimate-homography
@snippet samples/java/tutorial_code/features/Homography/PerspectiveCorrection.java estimate-homography
@end_toggle
To warp the source chessboard view into the desired chessboard view, we use @ref cv::warpPerspective
@ -216,11 +216,11 @@ To warp the source chessboard view into the desired chessboard view, we use @ref
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/Homography/perspective_correction.py warp-chessboard
@snippet samples/python/tutorial_code/features/Homography/perspective_correction.py warp-chessboard
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/Homography/PerspectiveCorrection.java warp-chessboard
@snippet samples/java/tutorial_code/features/Homography/PerspectiveCorrection.java warp-chessboard
@end_toggle
The result image is:
@ -234,11 +234,11 @@ To compute the coordinates of the source corners transformed by the homography:
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/Homography/perspective_correction.py compute-transformed-corners
@snippet samples/python/tutorial_code/features/Homography/perspective_correction.py compute-transformed-corners
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/Homography/PerspectiveCorrection.java compute-transformed-corners
@snippet samples/java/tutorial_code/features/Homography/PerspectiveCorrection.java compute-transformed-corners
@end_toggle
To check the correctness of the calculation, the matching lines are displayed:
@ -564,11 +564,11 @@ With the known associated camera poses and the intrinsic parameters, the relativ
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/Homography/panorama_stitching_rotating_camera.py extract-rotation
@snippet samples/python/tutorial_code/features/Homography/panorama_stitching_rotating_camera.py extract-rotation
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/Homography/PanoramaStitchingRotatingCamera.java extract-rotation
@snippet samples/java/tutorial_code/features/Homography/PanoramaStitchingRotatingCamera.java extract-rotation
@end_toggle
@add_toggle_cpp
@ -576,11 +576,11 @@ With the known associated camera poses and the intrinsic parameters, the relativ
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/Homography/panorama_stitching_rotating_camera.py compute-rotation-displacement
@snippet samples/python/tutorial_code/features/Homography/panorama_stitching_rotating_camera.py compute-rotation-displacement
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/Homography/PanoramaStitchingRotatingCamera.java compute-rotation-displacement
@snippet samples/java/tutorial_code/features/Homography/PanoramaStitchingRotatingCamera.java compute-rotation-displacement
@end_toggle
Here, the second image will be stitched with respect to the first image. The homography can be calculated using the formula above:
@ -590,11 +590,11 @@ Here, the second image will be stitched with respect to the first image. The hom
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/Homography/panorama_stitching_rotating_camera.py compute-homography
@snippet samples/python/tutorial_code/features/Homography/panorama_stitching_rotating_camera.py compute-homography
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/Homography/PanoramaStitchingRotatingCamera.java compute-homography
@snippet samples/java/tutorial_code/features/Homography/PanoramaStitchingRotatingCamera.java compute-homography
@end_toggle
The stitching is made simply with:
@ -604,11 +604,11 @@ The stitching is made simply with:
@end_toggle
@add_toggle_python
@snippet samples/python/tutorial_code/features2D/Homography/panorama_stitching_rotating_camera.py stitch
@snippet samples/python/tutorial_code/features/Homography/panorama_stitching_rotating_camera.py stitch
@end_toggle
@add_toggle_java
@snippet samples/java/tutorial_code/features2D/Homography/PanoramaStitchingRotatingCamera.java stitch
@snippet samples/java/tutorial_code/features/Homography/PanoramaStitchingRotatingCamera.java stitch
@end_toggle
The resulting image is:

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -1,4 +1,4 @@
2D Features framework (feature2d module) {#tutorial_table_of_content_features2d}
Features framework (features module) {#tutorial_table_of_content_features}
=========================================
- @subpage tutorial_harris_detector

View File

@ -151,7 +151,7 @@ cmake -DBUILD_LIST=calib3d,videoio,ts ../opencv
In this example we requested 3 modules and configuration script has determined all dependencies automatically:
```
-- OpenCV modules:
-- To be built: calib3d core features2d flann highgui imgcodecs imgproc ts videoio
-- To be built: calib3d core features flann highgui imgcodecs imgproc ts videoio
```

View File

@ -111,7 +111,7 @@ Making a project
on the list below are enough (for simple applications) . In my case, I am putting all of them
since I plan to use the whole bunch:
opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui opencv_ml opencv_videoio opencv_video opencv_features2d
opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui opencv_videoio opencv_video opencv_features
opencv_3d opencv_objdetect opencv_flann
![](images/a10.png)
@ -123,7 +123,7 @@ Making a project
@endcode
My output (in case you want to check) was:
@code{.bash}
-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_videoio -lopencv_imgcodecs -lopencv_flann
-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_video -lopencv_features -lopencv_3d -lopencv_calib -lopencv_stereo -lopencv_objdetect -lopencv_videoio -lopencv_imgcodecs -lopencv_flann
@endcode
Now you are done. Click **OK**

View File

@ -7,7 +7,7 @@ OpenCV Tutorials {#tutorial_root}
- @subpage tutorial_table_of_content_app - application utils (GUI, image/video input/output)
- @subpage tutorial_table_of_content_calib3d - extract 3D world information from 2D images
- @subpage tutorial_table_of_content_objdetect - INSERT OBJDETECT MODULE INFO
- @subpage tutorial_table_of_content_features2d - feature detectors, descriptors and matching framework
- @subpage tutorial_table_of_content_features - feature detectors, descriptors and matching framework
- @subpage tutorial_table_of_content_dnn - infer neural networks using built-in _dnn_ module
- @subpage tutorial_table_of_content_gapi - graph-based approach to computer vision algorithms building
- @subpage tutorial_table_of_content_other - other modules (stitching, video, photo)

View File

@ -58,8 +58,8 @@
#ifdef HAVE_OPENCV_CALIB
#include "opencv2/calib.hpp"
#endif
#ifdef HAVE_OPENCV_FEATURES2D
#include "opencv2/features2d.hpp"
#ifdef HAVE_OPENCV_FEATURES
#include "opencv2/features.hpp"
#endif
#ifdef HAVE_OPENCV_DNN
#include "opencv2/dnn.hpp"

View File

@ -6,7 +6,7 @@ set(debug_modules "")
if(DEBUG_opencv_3d)
list(APPEND debug_modules opencv_highgui)
endif()
ocv_define_module(3d opencv_imgproc opencv_features2d opencv_flann ${debug_modules}
ocv_define_module(3d opencv_imgproc opencv_features opencv_flann ${debug_modules}
WRAP java objc python js
)
ocv_target_link_libraries(${the_module} ${LAPACK_LIBRARIES})

View File

@ -734,7 +734,7 @@ private:
};
/** @example samples/cpp/tutorial_code/features2D/Homography/pose_from_homography.cpp
/** @example samples/cpp/tutorial_code/features/Homography/pose_from_homography.cpp
An example program about pose estimation from coplanar points
Check @ref tutorial_homography "the corresponding tutorial" for more details
@ -967,7 +967,7 @@ CV_EXPORTS_AS(projectPointsSepJ) void projectPoints(
OutputArray dpdc=noArray(), OutputArray dpdk=noArray(),
OutputArray dpdo=noArray(), double aspectRatio=0.);
/** @example samples/cpp/tutorial_code/features2D/Homography/homography_from_camera_displacement.cpp
/** @example samples/cpp/tutorial_code/features/Homography/homography_from_camera_displacement.cpp
An example program about homography from the camera displacement
Check @ref tutorial_homography "the corresponding tutorial" for more details
@ -2077,7 +2077,7 @@ CV_EXPORTS_W cv::Mat estimateAffinePartial2D(InputArray from, InputArray to, Out
size_t maxIters = 2000, double confidence = 0.99,
size_t refineIters = 10);
/** @example samples/cpp/tutorial_code/features2D/Homography/decompose_homography.cpp
/** @example samples/cpp/tutorial_code/features/Homography/decompose_homography.cpp
An example program with homography decomposition.
Check @ref tutorial_homography "the corresponding tutorial" for more details.

View File

@ -63,7 +63,7 @@
#include "opencv2/3d.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/features2d.hpp"
#include "opencv2/features.hpp"
#include "opencv2/core/ocl.hpp"
#include "opencv2/core/hal/intrin.hpp"

View File

@ -42,7 +42,7 @@
//M*/
#include "test_precomp.hpp"
#include <opencv2/features2d.hpp>
#include <opencv2/features.hpp>
namespace opencv_test { namespace {

View File

@ -20,7 +20,7 @@ foreach(mod ${OPENCV_MODULES_BUILD} ${OPENCV_MODULES_DISABLED_USER} ${OPENCV_MOD
endforeach()
ocv_list_sort(OPENCV_MODULES_MAIN)
ocv_list_sort(OPENCV_MODULES_EXTRA)
set(FIXED_ORDER_MODULES core imgproc imgcodecs videoio highgui video 3d stereo features2d calib objdetect dnn flann photo stitching)
set(FIXED_ORDER_MODULES core imgproc imgcodecs videoio highgui video 3d stereo features calib objdetect dnn flann photo stitching)
list(REMOVE_ITEM OPENCV_MODULES_MAIN ${FIXED_ORDER_MODULES})
set(OPENCV_MODULES_MAIN ${FIXED_ORDER_MODULES} ${OPENCV_MODULES_MAIN})

Some files were not shown because too many files have changed in this diff Show More