--- /dev/null
+#!/usr/bin/env python
+
+from pathlib import Path
+import re
+
+# Tasks
+# 1. Find all tutorials
+# 2. Generate tree (@subpage)
+# 3. Check prev/next nodes
+
+class Tutorial(object):
+ def __init__(self, path):
+ self.path = path
+ self.title = None # doxygen title
+ self.children = [] # ordered titles
+ self.prev = None
+ self.next = None
+ with open(path, "rt") as f:
+ self.parse(f)
+
+ def parse(self, f):
+ rx_title = re.compile(r"\{#(\w+)\}")
+ rx_subpage = re.compile(r"@subpage\s+(\w+)")
+ rx_prev = re.compile(r"@prev_tutorial\{(\w+)\}")
+ rx_next = re.compile(r"@next_tutorial\{(\w+)\}")
+ for line in f:
+ if self.title is None:
+ m = rx_title.search(line)
+ if m:
+ self.title = m.group(1)
+ continue
+ if self.prev is None:
+ m = rx_prev.search(line)
+ if m:
+ self.prev = m.group(1)
+ continue
+ if self.next is None:
+ m = rx_next.search(line)
+ if m:
+ self.next = m.group(1)
+ continue
+ m = rx_subpage.search(line)
+ if m:
+ self.children.append(m.group(1))
+ continue
+
+ def verify_prev_next(self, storage):
+ res = True
+
+ if self.title is None:
+ print("[W] No title")
+ res = False
+
+ prev = None
+ for one in self.children:
+ c = storage[one]
+ if c.prev is not None and c.prev != prev:
+ print("[W] Wrong prev_tutorial: expected {} / actual {}".format(c.prev, prev))
+ res = False
+ prev = c.title
+
+ next = None
+ for one in reversed(self.children):
+ c = storage[one]
+ if c.next is not None and c.next != next:
+ print("[W] Wrong next_tutorial: expected {} / actual {}".format(c.next, next))
+ res = False
+ next = c.title
+
+ if len(self.children) == 0 and self.prev is None and self.next is None:
+ print("[W] No prev and next tutorials")
+ res = False
+
+ return res
+
+if __name__ == "__main__":
+
+ p = Path('tutorials')
+ print("Looking for tutorials in: '{}'".format(p))
+
+ all_tutorials = dict()
+ for f in p.glob('**/*'):
+ if f.suffix.lower() in ('.markdown', '.md'):
+ t = Tutorial(f)
+ all_tutorials[t.title] = t
+
+ res = 0
+ print("Found: {}".format(len(all_tutorials)))
+ print("------")
+ for title, t in all_tutorials.items():
+ if not t.verify_prev_next(all_tutorials):
+ print("[E] Verification failed: {}".format(t.path))
+ print("------")
+ res = 1
+
+ exit(res)
--- /dev/null
+High Level GUI and Media (highgui module) {#tutorial_table_of_content_highgui}
+=========================================
+
+Content has been moved to this page: @ref tutorial_table_of_content_app
--- /dev/null
+Image Input and Output (imgcodecs module) {#tutorial_table_of_content_imgcodecs}
+=========================================
+
+Content has been moved to this page: @ref tutorial_table_of_content_app
--- /dev/null
+Video Input and Output (videoio module) {#tutorial_table_of_content_videoio}
+=========================================
+
+Content has been moved to this page: @ref tutorial_table_of_content_app
Reading Geospatial Raster files with GDAL {#tutorial_raster_io_gdal}
=========================================
+@prev_tutorial{tutorial_trackbar}
+@next_tutorial{tutorial_video_input_psnr_ssim}
+
+| | |
+| -: | :- |
+| Original author | Marvin Smith |
+| Compatibility | OpenCV >= 3.0 |
+
Geospatial raster data is a heavily used product in Geographic Information Systems and
Photogrammetry. Raster data typically can represent imagery and Digital Elevation Models (DEM). The
standard library for loading GIS imagery is the Geographic Data Abstraction Library [(GDAL)](http://www.gdal.org). In this
--- /dev/null
+Application utils (highgui, imgcodecs, videoio modules) {#tutorial_table_of_content_app}
+=======================================================
+
+- @subpage tutorial_trackbar
+- @subpage tutorial_raster_io_gdal
+- @subpage tutorial_video_input_psnr_ssim
+- @subpage tutorial_video_write
+- @subpage tutorial_kinect_openni
+- @subpage tutorial_orbbec_astra
+- @subpage tutorial_intelperc
Adding a Trackbar to our applications! {#tutorial_trackbar}
======================================
+@next_tutorial{tutorial_raster_io_gdal}
+
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
+
- In the previous tutorials (about @ref tutorial_adding_images and the @ref tutorial_basic_linear_transform)
you might have noted that we needed to give some **input** to our programs, such
as \f$\alpha\f$ and \f$beta\f$. We accomplished that by entering this data using the Terminal.
Video Input with OpenCV and similarity measurement {#tutorial_video_input_psnr_ssim}
==================================================
+@prev_tutorial{tutorial_raster_io_gdal}
@next_tutorial{tutorial_video_write}
+| | |
+| -: | :- |
+| Original author | Bernát Gábor |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_video_input_psnr_ssim}
@next_tutorial{tutorial_kinect_openni}
+| | |
+| -: | :- |
+| Original author | Bernát Gábor |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_camera_calibration_square_chess}
@next_tutorial{tutorial_real_time_pose}
+| | |
+| -: | :- |
+| Original author | Bernát Gábor |
+| Compatibility | OpenCV >= 4.0 |
+
Cameras have been around for a long-long time. However, with the introduction of the cheap *pinhole*
cameras in the late 20th century, they became a common occurrence in our everyday life.
@next_tutorial{tutorial_camera_calibration_square_chess}
+| | |
+| -: | :- |
+| Original author | Laurent Berger |
+| Compatibility | OpenCV >= 3.0 |
+
The goal of this tutorial is to learn how to create calibration pattern.
@prev_tutorial{tutorial_camera_calibration_pattern}
@next_tutorial{tutorial_camera_calibration}
+| | |
+| -: | :- |
+| Original author | Victor Eruhimov |
+| Compatibility | OpenCV >= 4.0 |
+
The goal of this tutorial is to learn how to calibrate a camera given a set of chessboard images.
@prev_tutorial{tutorial_real_time_pose}
+| | |
+| -: | :- |
+| Original author | Vladislav Sovrasov |
+| Compatibility | OpenCV >= 3.1 |
+
According to classical calibration technique user must collect all data first and when run @ref cv::calibrateCamera function
to obtain camera parameters. If average re-projection error is huge or if estimated parameters seems to be wrong, process of
@prev_tutorial{tutorial_camera_calibration}
@next_tutorial{tutorial_interactive_calibration}
+| | |
+| -: | :- |
+| Original author | Edgar Riba |
+| Compatibility | OpenCV >= 3.0 |
+
Nowadays, augmented reality is one of the top research topic in computer vision and robotics fields.
The most elemental problem in augmented reality is the estimation of the camera pose respect of an
Camera calibration and 3D reconstruction (calib3d module) {#tutorial_table_of_content_calib3d}
==========================================================
-Although we get most of our images in a 2D format they do come from a 3D world. Here you will learn how to find out 3D world information from 2D images.
-
- @subpage tutorial_camera_calibration_pattern
-
- *Languages:* Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Laurent Berger
-
- You will learn how to create some calibration pattern.
-
- @subpage tutorial_camera_calibration_square_chess
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Victor Eruhimov
-
- You will use some chessboard images to calibrate your camera.
-
- @subpage tutorial_camera_calibration
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 4.0
-
- *Author:* Bernát Gábor
-
- Camera calibration by using either the chessboard, circle or the asymmetrical circle
- pattern. Get the images either from a camera attached, a video file or from an image
- collection.
-
- @subpage tutorial_real_time_pose
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Edgar Riba
-
- Real time pose estimation of a textured object using ORB features, FlannBased matcher, PnP
- approach plus Ransac and Linear Kalman Filter to reject possible bad poses.
-
- @subpage tutorial_interactive_calibration
-
- *Compatibility:* \> OpenCV 3.1
-
- *Author:* Vladislav Sovrasov
-
- Camera calibration by using either the chessboard, chAruco, asymmetrical circle or dual asymmetrical circle
- pattern. Calibration process is continuous, so you can see results after each new pattern shot.
- As an output you get average reprojection error, intrinsic camera parameters, distortion coefficients and
- confidence intervals for all of evaluated variables.
@prev_tutorial{tutorial_mat_operations}
@next_tutorial{tutorial_basic_linear_transform}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
+We will learn how to blend two images!
Goal
----
@prev_tutorial{tutorial_adding_images}
@next_tutorial{tutorial_discrete_fourier_transform}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_basic_linear_transform}
@next_tutorial{tutorial_file_input_output_with_xml_yml}
+| | |
+| -: | :- |
+| Original author | Bernát Gábor |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_discrete_fourier_transform}
@next_tutorial{tutorial_how_to_use_OpenCV_parallel_for_}
+| | |
+| -: | :- |
+| Original author | Bernát Gábor |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_mat_the_basic_image_container}
@next_tutorial{tutorial_mat_mask_operations}
+| | |
+| -: | :- |
+| Original author | Bernát Gábor |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_file_input_output_with_xml_yml}
+| | |
+| -: | :- |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_how_to_scan_images}
@next_tutorial{tutorial_mat_operations}
+| | |
+| -: | :- |
+| Original author | Bernát Gábor |
+| Compatibility | OpenCV >= 3.0 |
+
Mask operations on matrices are quite simple. The idea is that we recalculate each pixel's value in
an image according to a mask matrix (also known as kernel). This mask holds values that will adjust
how much influence neighboring pixels (and the current pixel) have on the new pixel value. From a
@prev_tutorial{tutorial_mat_mask_operations}
@next_tutorial{tutorial_adding_images}
+| | |
+| -: | :- |
+| Compatibility | OpenCV >= 3.0 |
+
Input/Output
------------
@next_tutorial{tutorial_how_to_scan_images}
+| | |
+| -: | :- |
+| Original author | Bernát Gábor |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
The Core Functionality (core module) {#tutorial_table_of_content_core}
=====================================
-Here you will learn the about the basic building blocks of the library. A must read and know for
-understanding how to manipulate the images on a pixel level.
-
- @subpage tutorial_mat_the_basic_image_container
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Bernát Gábor
-
- You will learn how to store images in the memory and how to print out their content to the
- console.
-
- @subpage tutorial_how_to_scan_images
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Bernát Gábor
-
- You'll find out how to scan images (go through each of the image pixels) with OpenCV.
- Bonus: time measurement with OpenCV.
-
-
- @subpage tutorial_mat_mask_operations
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Bernát Gábor
-
- You'll find out how to scan images with neighbor access and use the @ref cv::filter2D
- function to apply kernel filters on images.
-
- @subpage tutorial_mat_operations
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- Reading/writing images from file, accessing pixels, primitive operations, visualizing images.
-
- @subpage tutorial_adding_images
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- We will learn how to blend two images!
-
- @subpage tutorial_basic_linear_transform
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- We will learn how to change our image appearance!
-
- @subpage tutorial_discrete_fourier_transform
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Bernát Gábor
-
- You will see how and why use the Discrete Fourier transformation with OpenCV.
-
-
- @subpage tutorial_file_input_output_with_xml_yml
-
- *Languages:* C++, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Bernát Gábor
-
- You will see how to use the @ref cv::FileStorage data structure of OpenCV to write and read
- data to XML or YAML file format.
-
- @subpage tutorial_how_to_use_OpenCV_parallel_for_
-
- *Languages:* C++
-
- *Compatibility:* \>= OpenCV 2.4.3
-
- You will see how to use the OpenCV parallel_for_ to easily parallelize your code.
@prev_tutorial{tutorial_dnn_custom_layers}
@next_tutorial{tutorial_dnn_text_spotting}
+| | |
+| -: | :- |
+| Original author | Zihao Mu |
+| Compatibility | OpenCV >= 4.3 |
+
## Introduction
In this tutorial, we first introduce how to obtain the custom OCR model, then how to transform your own OCR models so that they can be run correctly by the opencv_dnn module. and finally we will provide some pre-trained models.
@prev_tutorial{tutorial_dnn_halide_scheduling}
@next_tutorial{tutorial_dnn_yolo}
+| | |
+| -: | :- |
+| Original author | Dmitry Kurtaev |
+| Compatibility | OpenCV >= 3.3 |
+
## Introduction
In this tutorial you'll know how to run deep learning networks on Android device
using OpenCV deep learning module.
@prev_tutorial{tutorial_dnn_javascript}
@next_tutorial{tutorial_dnn_OCR}
+| | |
+| -: | :- |
+| Original author | Dmitry Kurtaev |
+| Compatibility | OpenCV >= 3.4.1 |
+
## Introduction
Deep learning is a fast growing area. The new approaches to build neural networks
usually introduce new types of layers. They could be modifications of existing
@next_tutorial{tutorial_dnn_halide}
+| | |
+| -: | :- |
+| Original author | Vitaliy Lyudvichenko |
+| Compatibility | OpenCV >= 3.3 |
+
Introduction
------------
@prev_tutorial{tutorial_dnn_googlenet}
@next_tutorial{tutorial_dnn_halide_scheduling}
+| | |
+| -: | :- |
+| Original author | Dmitry Kurtaev |
+| Compatibility | OpenCV >= 3.3 |
+
## Introduction
This tutorial guidelines how to run your models in OpenCV deep learning module
using Halide language backend. Halide is an open-source project that let us
@prev_tutorial{tutorial_dnn_halide}
@next_tutorial{tutorial_dnn_android}
+| | |
+| -: | :- |
+| Original author | Dmitry Kurtaev |
+| Compatibility | OpenCV >= 3.3 |
+
## Introduction
Halide code is the same for every device we use. But for achieving the satisfied
efficiency we should schedule computations properly. In this tutorial we describe
@prev_tutorial{tutorial_dnn_yolo}
@next_tutorial{tutorial_dnn_custom_layers}
+| | |
+| -: | :- |
+| Original author | Dmitry Kurtaev |
+| Compatibility | OpenCV >= 3.3.1 |
+
## Introduction
This tutorial will show us how to run deep learning models using OpenCV.js right
in a browser. Tutorial refers a sample of face detection and face recognition
@prev_tutorial{tutorial_dnn_OCR}
+| | |
+| -: | :- |
+| Original author | Wenqing Zhang |
+| Compatibility | OpenCV >= 4.5 |
+
## Introduction
In this tutorial, we will introduce the APIs for TextRecognitionModel and TextDetectionModel in detail.
@prev_tutorial{tutorial_dnn_android}
@next_tutorial{tutorial_dnn_javascript}
+| | |
+| -: | :- |
+| Original author | Alessandro de Oliveira Faria |
+| Compatibility | OpenCV >= 3.3.1 |
+
Introduction
------------
=====================================
- @subpage tutorial_dnn_googlenet
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 3.3
-
- *Author:* Vitaliy Lyudvichenko
-
- In this tutorial you will learn how to use opencv_dnn module for image classification by using GoogLeNet trained network from Caffe model zoo.
-
- @subpage tutorial_dnn_halide
-
- *Languages:* Halide
-
- *Compatibility:* \> OpenCV 3.3
-
- *Author:* Dmitry Kurtaev
-
- This tutorial guidelines how to run your models in OpenCV deep learning module using Halide language backend.
-
- @subpage tutorial_dnn_halide_scheduling
-
- *Languages:* Halide
-
- *Compatibility:* \> OpenCV 3.3
-
- *Author:* Dmitry Kurtaev
-
- In this tutorial we describe the ways to schedule your networks using Halide backend in OpenCV deep learning module.
-
- @subpage tutorial_dnn_android
-
- *Languages:* Java
-
- *Compatibility:* \> OpenCV 3.3
-
- *Author:* Dmitry Kurtaev
-
- This tutorial will show you how to run deep learning model using OpenCV on Android device.
-
- @subpage tutorial_dnn_yolo
-
- *Languages:* C++, Python
-
- *Compatibility:* \> OpenCV 3.3.1
-
- *Author:* Alessandro de Oliveira Faria
-
- In this tutorial you will learn how to use opencv_dnn module using yolo_object_detection with device capture, video file or image.
-
- @subpage tutorial_dnn_javascript
-
- *Languages:* JavaScript
-
- *Compatibility:* \> OpenCV 3.3.1
-
- *Author:* Dmitry Kurtaev
-
- In this tutorial we'll run deep learning models in browser using OpenCV.js.
-
- @subpage tutorial_dnn_custom_layers
-
- *Languages:* C++, Python
-
- *Compatibility:* \> OpenCV 3.4.1
-
- *Author:* Dmitry Kurtaev
-
- How to define custom layers to import networks.
-
- @subpage tutorial_dnn_OCR
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 4.3
-
- *Author:* Zihao Mu
-
- In this tutorial you will learn how to use opencv_dnn module using custom OCR models.
-
- @subpage tutorial_dnn_text_spotting
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 4.5
-
- *Author:* Wenqing Zhang
-
- In these tutorial, we'll introduce how to use the high-level APIs for text recognition and text detection
@prev_tutorial{tutorial_detection_of_planar_objects}
@next_tutorial{tutorial_akaze_tracking}
+| | |
+| -: | :- |
+| Original author | Fedor Morozov |
+| Compatibility | OpenCV >= 3.0 |
+
Introduction
------------
@prev_tutorial{tutorial_akaze_matching}
@next_tutorial{tutorial_homography}
+| | |
+| -: | :- |
+| Original author | Fedor Morozov |
+| Compatibility | OpenCV >= 3.0 |
+
Introduction
------------
@prev_tutorial{tutorial_feature_homography}
@next_tutorial{tutorial_akaze_matching}
+| | |
+| -: | :- |
+| 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
known planar objects in scenes.
@prev_tutorial{tutorial_feature_detection}
@next_tutorial{tutorial_feature_flann_matcher}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_corner_subpixels}
@next_tutorial{tutorial_feature_description}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_feature_description}
@next_tutorial{tutorial_feature_homography}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_feature_flann_matcher}
@next_tutorial{tutorial_detection_of_planar_objects}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_akaze_tracking}
+| | |
+| -: | :- |
+| Compatibility | OpenCV >= 3.0 |
+
@tableofcontents
Introduction {#tutorial_homography_Introduction}
2D Features framework (feature2d module) {#tutorial_table_of_content_features2d}
=========================================
-Learn about how to use the feature points detectors, descriptors and matching framework found inside
-OpenCV.
-
- @subpage tutorial_harris_detector
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Why is it a good idea to track corners? We learn how to use the Harris method to detect
- corners.
-
- @subpage tutorial_good_features_to_track
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we use an improved method to detect corners more accurately.
-
- @subpage tutorial_generic_corner_detector
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Here you will learn how to use OpenCV functions to make your personalized corner detector!
-
- *Languages:* C++, Java, Python
-
- @subpage tutorial_corner_subpixels
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Is pixel resolution enough? Here we learn a simple method to improve our corner location accuracy.
-
- @subpage tutorial_feature_detection
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- In this tutorial, you will use *features2d* to detect interest points.
-
- @subpage tutorial_feature_description
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- In this tutorial, you will use *features2d* to calculate feature vectors.
-
- @subpage tutorial_feature_flann_matcher
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- In this tutorial, you will use the FLANN library to make a fast matching.
-
- @subpage tutorial_feature_homography
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- In this tutorial, you will use *features2d* and *calib3d* to detect an object in a scene.
-
- @subpage tutorial_detection_of_planar_objects
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Victor Eruhimov
-
- You will use *features2d* and *calib3d* modules for detecting known planar objects in
- scenes.
-
- @subpage tutorial_akaze_matching
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 3.0
-
- *Author:* Fedor Morozov
-
- Using *AKAZE* local features to find correspondence between two images.
-
- @subpage tutorial_akaze_tracking
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 3.0
-
- *Author:* Fedor Morozov
-
- Using *AKAZE* and *ORB* for planar object tracking.
-
- @subpage tutorial_homography
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 3.0
-
- This tutorial will explain the basic concepts of the homography with some
- demonstration codes.
@prev_tutorial{tutorial_generic_corner_detector}
@next_tutorial{tutorial_feature_detection}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_good_features_to_track}
@next_tutorial{tutorial_corner_subpixels}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
Goal
----
@prev_tutorial{tutorial_harris_detector}
@next_tutorial{tutorial_generic_corner_detector}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@next_tutorial{tutorial_good_features_to_track}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
# Porting anisotropic image segmentation on G-API {#tutorial_gapi_anisotropic_segmentation}
+@prev_tutorial{tutorial_gapi_interactive_face_detection}
+@next_tutorial{tutorial_gapi_face_beautification}
+
[TOC]
# Introduction {#gapi_anisotropic_intro}
# Implementing a face beautification algorithm with G-API {#tutorial_gapi_face_beautification}
+@prev_tutorial{tutorial_gapi_anisotropic_segmentation}
+
[TOC]
# Introduction {#gapi_fb_intro}
# Face analytics pipeline with G-API {#tutorial_gapi_interactive_face_detection}
+@next_tutorial{tutorial_gapi_anisotropic_segmentation}
+
[TOC]
# Overview {#gapi_ifd_intro}
+++ /dev/null
-High Level GUI and Media (highgui module) {#tutorial_table_of_content_highgui}
-=========================================
-
-This section contains tutorials about how to use the built-in graphical user interface of the library.
-
-- @subpage tutorial_trackbar
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- We will learn how to add a Trackbar to our applications
+++ /dev/null
-Image Input and Output (imgcodecs module) {#tutorial_table_of_content_imgcodecs}
-=========================================
-
-This section contains tutorials about how to read/save your image files.
-
-- @subpage tutorial_raster_io_gdal
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Marvin Smith
-
- Read common GIS Raster and DEM files to display and manipulate geographic data.
@prev_tutorial{tutorial_motion_deblur_filter}
@next_tutorial{tutorial_periodic_noise_removing_filter}
+| | |
+| -: | :- |
+| Original author | Karpushin Vladislav |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@next_tutorial{tutorial_random_generator_and_text}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goals
-----
@prev_tutorial{tutorial_gausian_median_blur_bilateral_filter}
@next_tutorial{tutorial_opening_closing_hats}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_random_generator_and_text}
@next_tutorial{tutorial_erosion_dilatation}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_histogram_comparison}
@next_tutorial{tutorial_template_matching}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_histogram_equalization}
@next_tutorial{tutorial_histogram_comparison}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_histogram_calculation}
@next_tutorial{tutorial_back_projection}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_warp_affine}
@next_tutorial{tutorial_histogram_calculation}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_back_projection}
@next_tutorial{tutorial_find_contours}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_opening_closing_hats}
@next_tutorial{tutorial_morph_lines_detection}
+| | |
+| -: | :- |
+| Original author | Lorena García |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_laplace_operator}
@next_tutorial{tutorial_hough_lines}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_filter_2d}
@next_tutorial{tutorial_sobel_derivatives}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_point_polygon_test}
@next_tutorial{tutorial_out_of_focus_deblur_filter}
+| | |
+| -: | :- |
+| Original author | Theodore Tsesmelis |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_threshold_inRange}
@next_tutorial{tutorial_copyMakeBorder}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_hough_lines}
@next_tutorial{tutorial_remap}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_canny_detector}
@next_tutorial{tutorial_hough_circle}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_sobel_derivatives}
@next_tutorial{tutorial_canny_detector}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_hough_circle}
@next_tutorial{tutorial_warp_affine}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_copyMakeBorder}
@next_tutorial{tutorial_laplace_operator}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_remap}
@next_tutorial{tutorial_histogram_equalization}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_hitOrMiss}
@next_tutorial{tutorial_pyramids}
+| | |
+| -: | :- |
+| Original author | Theodore Tsesmelis |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_out_of_focus_deblur_filter}
@next_tutorial{tutorial_anisotropic_image_segmentation_by_a_gst}
+| | |
+| -: | :- |
+| Original author | Karpushin Vladislav |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_erosion_dilatation}
@next_tutorial{tutorial_hitOrMiss}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_distance_transform}
@next_tutorial{tutorial_motion_deblur_filter}
+| | |
+| -: | :- |
+| Original author | Karpushin Vladislav |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_anisotropic_image_segmentation_by_a_gst}
+| | |
+| -: | :- |
+| Original author | Karpushin Vladislav |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_morph_lines_detection}
@next_tutorial{tutorial_threshold}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_basic_geometric_drawing}
@next_tutorial{tutorial_gausian_median_blur_bilateral_filter}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goals
-----
@prev_tutorial{tutorial_hull}
@next_tutorial{tutorial_bounding_rotated_ellipses}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_bounding_rects_circles}
@next_tutorial{tutorial_moments}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_template_matching}
@next_tutorial{tutorial_hull}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_find_contours}
@next_tutorial{tutorial_bounding_rects_circles}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_bounding_rotated_ellipses}
@next_tutorial{tutorial_point_polygon_test}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_moments}
@next_tutorial{tutorial_distance_transform}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
Image Processing (imgproc module) {#tutorial_table_of_content_imgproc}
=================================
-In this section you will learn about the image processing (manipulation) functions inside OpenCV.
-
+Basic
+-----
- @subpage tutorial_basic_geometric_drawing
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- We will learn how to draw simple geometry with OpenCV!
-
- @subpage tutorial_random_generator_and_text
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- We will draw some *fancy-looking* stuff using OpenCV!
-
- @subpage tutorial_gausian_median_blur_bilateral_filter
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Let's take a look at some basic linear filters!
-
- @subpage tutorial_erosion_dilatation
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- Author: Ana Huamán
-
- Let's *change* the shape of objects!
-
- @subpage tutorial_opening_closing_hats
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Here we investigate different morphology operators
-
- @subpage tutorial_hitOrMiss
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.4
-
- *Author:* Lorena García
-
- Learn how to find patterns in binary images using the Hit-or-Miss operation
-
- @subpage tutorial_morph_lines_detection
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Theodore Tsesmelis
-
- Here we will show how we can use different morphological operators to extract horizontal and vertical lines
-
- @subpage tutorial_pyramids
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- What if I need a bigger/smaller image?
-
- @subpage tutorial_threshold
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- After so much processing, it is time to decide which pixels stay
-
- @subpage tutorial_threshold_inRange
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Rishiraj Surti
-
- Thresholding operations using inRange function.
-
+Transformations
+---------------
- @subpage tutorial_filter_2d
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn to design our own filters by using OpenCV functions
-
- @subpage tutorial_copyMakeBorder
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to pad our images
-
- @subpage tutorial_sobel_derivatives
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to calculate gradients and use them to detect edges
-
- @subpage tutorial_laplace_operator
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn about the *Laplace* operator and how to detect edges with it
-
- @subpage tutorial_canny_detector
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn a sophisticated alternative to detect edges
-
- @subpage tutorial_hough_lines
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to detect lines
-
- @subpage tutorial_hough_circle
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to detect circles
-
- @subpage tutorial_remap
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to manipulate pixels locations
-
- @subpage tutorial_warp_affine
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to rotate, translate and scale our images
-
+Histograms
+----------
- @subpage tutorial_histogram_equalization
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to improve the contrast in our images
-
- @subpage tutorial_histogram_calculation
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to create and generate histograms
-
- @subpage tutorial_histogram_comparison
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn to calculate metrics between histograms
-
- @subpage tutorial_back_projection
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to use histograms to find similar objects in images
-
- @subpage tutorial_template_matching
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to match templates in an image
-
-- @subpage tutorial_table_of_contents_contours
-
- Learn how to find contours in images and investigate their properties and features.
-
+Contours
+--------
+- @subpage tutorial_find_contours
+- @subpage tutorial_hull
+- @subpage tutorial_bounding_rects_circles
+- @subpage tutorial_bounding_rotated_ellipses
+- @subpage tutorial_moments
+- @subpage tutorial_point_polygon_test
+
+Others
+------
- @subpage tutorial_distance_transform
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Theodore Tsesmelis
-
- Where we learn to segment objects using Laplacian filtering, the Distance Transformation and the Watershed algorithm.
-
- @subpage tutorial_out_of_focus_deblur_filter
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Karpushin Vladislav
-
- You will learn how to recover an out-of-focus image by Wiener filter.
-
- @subpage tutorial_motion_deblur_filter
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Karpushin Vladislav
-
- You will learn how to recover an image with motion blur distortion using a Wiener filter.
-
- @subpage tutorial_anisotropic_image_segmentation_by_a_gst
-
- *Languages:* C++, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Karpushin Vladislav
-
- You will learn how to segment an anisotropic image with a single local orientation by a gradient structure tensor.
-
- @subpage tutorial_periodic_noise_removing_filter
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Karpushin Vladislav
-
- You will learn how to remove periodic noise in the Fourier domain.
Contours in OpenCV {#tutorial_table_of_contents_contours}
==================
-- @subpage tutorial_find_contours
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to find contours of objects in our image
-
-- @subpage tutorial_hull
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to get hull contours and draw them
-
-- @subpage tutorial_bounding_rects_circles
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to obtain bounding boxes and circles for our contours
-
-- @subpage tutorial_bounding_rotated_ellipses
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to obtain rotated bounding boxes and ellipses for our contours
-
-- @subpage tutorial_moments
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn to calculate the moments of an image
-
-- @subpage tutorial_point_polygon_test
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Where we learn how to calculate distances from the image to contours
+Content has been moved to this page: @ref tutorial_table_of_content_imgproc
@prev_tutorial{tutorial_pyramids}
@next_tutorial{tutorial_threshold_inRange}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_threshold}
@next_tutorial{tutorial_filter_2d}
+| | |
+| -: | :- |
+| Original author | Lorena García |
+| Compatibility | Rishiraj Surti |
+
Goal
----
OpenCV configuration options reference {#tutorial_config_reference}
======================================
+@prev_tutorial{tutorial_general_install}
+@next_tutorial{tutorial_linux_install}
+
@tableofcontents
# Introduction {#tutorial_config_reference_intro}
Cross compilation for ARM based Linux systems {#tutorial_arm_crosscompile_with_cmake}
=============================================
-@prev_tutorial{tutorial_ios_install}
+@prev_tutorial{tutorial_macos_install}
@next_tutorial{tutorial_building_tegra_cuda}
| | |
6. Add newly created tutorial to the corresponding table of contents. Just find
<em>"table_of_content_*.markdown"</em> file with the needed table and place new record in it
similar to existing ones.
- @verbatim
-- @subpage tutorial_windows_visual_studio_image_watch
-
- _Languages:_ C++, Java, Python
-
- _Compatibility:_ \>= OpenCV 2.4
- _Author:_ Wolf Kienzle
-
- You will learn how to visualize OpenCV matrices and images within Visual Studio 2012.
- @endverbatim
- As you can see it is just a list item with special _subpage_ command which marks your page as a
- child and places it into the existing pages hierarchy. Add compatibility information,
- authors list and short description. Also note the list item indent, empty lines between
+ It is simply a list item with special _subpage_ command which marks your page as a
+ child and places it into the existing pages hierarchy. Also note the list item indent, empty lines between
paragraphs and special _italic_ markers.
7. Generate doxygen documentation and verify results.
OpenCV installation overview {#tutorial_general_install}
============================
+@next_tutorial{tutorial_config_reference}
+
@tableofcontents
There are two ways of installing OpenCV on your machine: download prebuilt version for your platform or compile from sources.
=====================
@prev_tutorial{tutorial_android_ocl_intro}
-@next_tutorial{tutorial_ios_install}
+@next_tutorial{tutorial_arm_crosscompile_with_cmake}
| | |
| -: | :- |
##### Other platforms
- @subpage tutorial_macos_install
-- @subpage tutorial_ios_install
- @subpage tutorial_arm_crosscompile_with_cmake
- @subpage tutorial_building_tegra_cuda
+- @ref tutorial_ios_install
##### Usage basics
- @subpage tutorial_display_image - We will learn how to load an image from file and display it using OpenCV
OpenCV iOS Hello {#tutorial_hello}
================
+@prev_tutorial{tutorial_ios_install}
@next_tutorial{tutorial_image_manipulation}
+| | |
+| -: | :- |
+| Original author | Charu Hans |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_hello}
@next_tutorial{tutorial_video_processing}
+| | |
+| -: | :- |
+| Original author | Charu Hans |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
Installation in iOS {#tutorial_ios_install}
===================
-@prev_tutorial{tutorial_macos_install}
-@next_tutorial{tutorial_arm_crosscompile_with_cmake}
+@next_tutorial{tutorial_hello}
| | |
| -: | :- |
OpenCV iOS {#tutorial_table_of_content_ios}
==========
-
+- @subpage tutorial_ios_install
- @subpage tutorial_hello
-
- *Languages:* Objective-C++
-
- *Compatibility:* \> OpenCV 2.4.3
-
- *Author:* Charu Hans
-
- You will learn how to link OpenCV with iOS and write a basic application.
-
- @subpage tutorial_image_manipulation
-
- *Languages:* Objective-C++
-
- *Compatibility:* \> OpenCV 2.4.3
-
- *Author:* Charu Hans
-
- You will learn how to do simple image manipulation using OpenCV in iOS.
-
- @subpage tutorial_video_processing
-
- *Languages:* Objective-C++
-
- *Compatibility:* \> OpenCV 2.4.3
-
- *Author:* Eduard Feicho
-
- You will learn how to capture and process video from camera using OpenCV in iOS.
@prev_tutorial{tutorial_image_manipulation}
+| | |
+| -: | :- |
+| Original author | Eduard Feicho |
+| Compatibility | OpenCV >= 3.0 |
+
This tutorial explains how to process video frames using the iPhone's camera and OpenCV.
+++ /dev/null
-Machine Learning (ml module) {#tutorial_table_of_content_ml}
-============================
-
-Use the powerful machine learning classes for statistical classification, regression and clustering
-of data.
-
-- @subpage tutorial_introduction_to_svm
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Fernando Iglesias García
-
- Learn what a Support Vector Machine is.
-
-- @subpage tutorial_non_linear_svms
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Fernando Iglesias García
-
- Here you will learn how to define the optimization problem for SVMs when it is not possible to
- separate linearly the training data.
-
-- @subpage tutorial_introduction_to_pca
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Theodore Tsesmelis
-
- Learn what a Principal Component Analysis (PCA) is.
+++ /dev/null
-Object Detection (objdetect module) {#tutorial_table_of_content_objdetect}
-===================================
-
-Ever wondered how your digital camera detects peoples and faces? Look here to find out!
-
-- @subpage tutorial_cascade_classifier
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Ana Huamán
-
- Here we learn how to use *objdetect* to find objects in our images or videos
-
-- @subpage tutorial_traincascade
-
- This tutorial describes _opencv_traincascade_ application and its parameters.
--- /dev/null
+Machine Learning (ml module) {#tutorial_table_of_content_ml}
+============================
+
+Content has been moved to this page: @ref tutorial_table_of_content_other
--- /dev/null
+Object Detection (objdetect module) {#tutorial_table_of_content_objdetect}
+===================================
+
+Content has been moved to this page: @ref tutorial_table_of_content_other
--- /dev/null
+Computational photography (photo module) {#tutorial_table_of_content_photo}
+========================================
+
+Content has been moved to this page: @ref tutorial_table_of_content_other
--- /dev/null
+Images stitching (stitching module) {#tutorial_table_of_content_stitching}
+===================================
+
+Content has been moved to this page: @ref tutorial_table_of_content_other
--- /dev/null
+Video analysis (video module) {#tutorial_table_of_content_video}
+=============================
+
+Content has been moved to this page: @ref tutorial_table_of_content_other
How to Use Background Subtraction Methods {#tutorial_background_subtraction}
=========================================
+@prev_tutorial{tutorial_stitcher}
@next_tutorial{tutorial_meanshift}
+| | |
+| -: | :- |
+| Original author | Domenico Daniele Bloisi |
+| Compatibility | OpenCV >= 3.0 |
+
- Background subtraction (BS) is a common and widely used technique for generating a foreground
mask (namely, a binary image containing the pixels belonging to moving objects in the scene) by
using static cameras.
Cascade Classifier {#tutorial_cascade_classifier}
==================
+@prev_tutorial{tutorial_optical_flow}
@next_tutorial{tutorial_traincascade}
+| | |
+| -: | :- |
+| Original author | Ana Huamán |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
High Dynamic Range Imaging {#tutorial_hdr_imaging}
==========================
+@next_tutorial{tutorial_stitcher}
+
+| | |
+| -: | :- |
+| Original author | Fedor Morozov |
+| Compatibility | OpenCV >= 3.0 |
+
Introduction
------------
@prev_tutorial{tutorial_non_linear_svms}
+| | |
+| -: | :- |
+| Original author | Theodore Tsesmelis |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
Introduction to Support Vector Machines {#tutorial_introduction_to_svm}
=======================================
+@prev_tutorial{tutorial_traincascade}
@next_tutorial{tutorial_non_linear_svms}
+| | |
+| -: | :- |
+| Original author | Fernando Iglesias García |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
@prev_tutorial{tutorial_introduction_to_svm}
@next_tutorial{tutorial_introduction_to_pca}
+| | |
+| -: | :- |
+| Original author | Fernando Iglesias García |
+| Compatibility | OpenCV >= 3.0 |
+
Goal
----
============
@prev_tutorial{tutorial_meanshift}
+@next_tutorial{tutorial_cascade_classifier}
Goal
----
High level stitching API (Stitcher class) {#tutorial_stitcher}
=========================================
+@prev_tutorial{tutorial_hdr_imaging}
+@next_tutorial{tutorial_background_subtraction}
+
+| | |
+| -: | :- |
+| Original author | Jiri Horner |
+| Compatibility | OpenCV >= 3.2 |
+
Goal
----
--- /dev/null
+Other tutorials (ml, objdetect, photo, stitching, video) {#tutorial_table_of_content_other}
+========================================================
+
+- photo. @subpage tutorial_hdr_imaging
+- stitching. @subpage tutorial_stitcher
+- video. @subpage tutorial_background_subtraction
+- video. @subpage tutorial_meanshift
+- video. @subpage tutorial_optical_flow
+- objdetect. @subpage tutorial_cascade_classifier
+- objdetect. @subpage tutorial_traincascade
+- ml. @subpage tutorial_introduction_to_svm
+- ml. @subpage tutorial_non_linear_svms
+- ml. @subpage tutorial_introduction_to_pca
===========================
@prev_tutorial{tutorial_cascade_classifier}
+@next_tutorial{tutorial_introduction_to_svm}
Introduction
------------
+++ /dev/null
-Computational photography (photo module) {#tutorial_table_of_content_photo}
-========================================
-
-Use OpenCV for advanced photo processing.
-
-- @subpage tutorial_hdr_imaging
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 3.0
-
- *Author:* Fedor Morozov
-
- Learn how to create and process high dynamic range images.
+++ /dev/null
-Images stitching (stitching module) {#tutorial_table_of_content_stitching}
-===================================
-
-Sometimes a single image can't capture it all. Here you will learn how to join
-more images together to create a large pano. Doesn't matter if you want to
-create a photo panorama or you want to stitch scans.
-
-- @subpage tutorial_stitcher
-
- *Languages:* C++
-
- *Compatibility:* \>= OpenCV 3.2
-
- *Author:* Jiri Horner
-
- You will use high level stitching api to create a photo panorama. You will
- learn about Stitcher class and its configurations.
- @subpage tutorial_table_of_content_introduction - build and install OpenCV on your computer
- @subpage tutorial_table_of_content_core - basic building blocks of the library
- @subpage tutorial_table_of_content_imgproc - image processing functions
-- @subpage tutorial_table_of_content_highgui - built-in graphical user interface
-- @subpage tutorial_table_of_content_imgcodecs - read and write images from/to files using _imgcodecs_ module
-- @subpage tutorial_table_of_content_videoio - read and write videos using _videio_ module
+- @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_features2d - feature detectors, descriptors and matching framework
-- @subpage tutorial_table_of_content_video - algorithms for video streams: motion detection, object and feature tracking, etc.
-- @subpage tutorial_table_of_content_objdetect - detect objects using conventional CV methods
- @subpage tutorial_table_of_content_dnn - infer neural networks using built-in _dnn_ module
-- @subpage tutorial_table_of_content_ml - machine learning algorithms for statistical classification, regression and data clustering
- @subpage tutorial_table_of_content_gapi - graph-based approach to computer vision algorithms building
-- @subpage tutorial_table_of_content_photo - advanced photo processing
-- @subpage tutorial_table_of_content_stitching - create panoramas and more using _stitching_ module
+- @subpage tutorial_table_of_content_other - other modules (ml, objdetect, stitching, video, photo)
- @subpage tutorial_table_of_content_ios - running OpenCV on an iDevice
@cond CUDA_MODULES
- @subpage tutorial_table_of_content_gpu - utilizing power of video card to run CV algorithms
+++ /dev/null
-Video analysis (video module) {#tutorial_table_of_content_video}
-=============================
-
-Look here in order to find use on your video stream algorithms like: motion extraction, feature
-tracking and foreground extractions.
-
-- @subpage tutorial_background_subtraction
-
- *Languages:* C++, Java, Python
-
- *Compatibility:* \> OpenCV 2.4.6
-
- *Author:* Domenico Daniele Bloisi
-
- We will learn how to extract foreground masks from both videos and sequences of images and
- to show them.
-
-- @subpage tutorial_meanshift
-
- *Languages:* C++, Java, Python
-
- Learn how to use the Meanshift and Camshift algorithms to track objects in videos.
-
-- @subpage tutorial_optical_flow
-
- *Languages:* C++, Java, Python
-
- We will learn how to use optical flow methods to track sparse features or to create a dense representation.
+++ /dev/null
-Video Input and Output (videoio module) {#tutorial_table_of_content_videoio}
-=========================================
-
-This section contains tutorials about how to read/save your video files.
-
-- @subpage tutorial_video_input_psnr_ssim
-
- *Languages:* C++, Python
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Bernát Gábor
-
- You will learn how to read video streams, and how to calculate similarity values such as PSNR
- or SSIM.
-
-- @subpage tutorial_video_write
-
- *Languages:* C++
-
- *Compatibility:* \> OpenCV 2.0
-
- *Author:* Bernát Gábor
-
-- @subpage tutorial_kinect_openni
-
- *Languages:* C++
-
-- @subpage tutorial_orbbec_astra
-
- *Languages:* C++
-
-- @subpage tutorial_intelperc
-
- *Languages:* C++