2014-11-27 20:39:05 +08:00
|
|
|
Image Processing (imgproc module) {#tutorial_table_of_content_imgproc}
|
|
|
|
=================================
|
|
|
|
|
|
|
|
In this section you will learn about the image processing (manipulation) functions inside OpenCV.
|
|
|
|
|
2018-08-03 02:22:58 +08:00
|
|
|
- @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
|
|
|
|
|
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
We will draw some *fancy-looking* stuff using OpenCV!
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
- @subpage tutorial_gausian_median_blur_bilateral_filter
|
|
|
|
|
2017-08-21 00:14:12 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Let's take a look at some basic linear filters!
|
|
|
|
|
|
|
|
- @subpage tutorial_erosion_dilatation
|
|
|
|
|
2018-05-19 01:51:34 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
Author: Ana Huamán
|
|
|
|
|
|
|
|
Let's *change* the shape of objects!
|
|
|
|
|
|
|
|
- @subpage tutorial_opening_closing_hats
|
|
|
|
|
2018-05-19 01:51:34 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Here we investigate different morphology operators
|
|
|
|
|
2017-08-21 05:54:38 +08:00
|
|
|
- @subpage tutorial_hitOrMiss
|
|
|
|
|
|
|
|
*Languages:* C++, Java, Python
|
2017-01-04 01:34:04 +08:00
|
|
|
|
|
|
|
*Compatibility:* \> OpenCV 2.4
|
|
|
|
|
|
|
|
*Author:* Lorena García
|
|
|
|
|
|
|
|
Learn how to find patterns in binary images using the Hit-or-Miss operation
|
|
|
|
|
2017-08-22 01:51:50 +08:00
|
|
|
- @subpage tutorial_morph_lines_detection
|
|
|
|
|
|
|
|
*Languages:* C++, Java, Python
|
2015-02-24 21:33:15 +08:00
|
|
|
|
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Theodore Tsesmelis
|
|
|
|
|
2017-03-02 02:44:34 +08:00
|
|
|
Here we will show how we can use different morphological operators to extract horizontal and vertical lines
|
2015-02-24 21:33:15 +08:00
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
- @subpage tutorial_pyramids
|
|
|
|
|
2017-08-23 22:37:11 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
What if I need a bigger/smaller image?
|
|
|
|
|
|
|
|
- @subpage tutorial_threshold
|
|
|
|
|
2018-05-19 01:51:34 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
2017-03-02 02:44:34 +08:00
|
|
|
After so much processing, it is time to decide which pixels stay
|
2014-11-27 20:39:05 +08:00
|
|
|
|
2016-03-21 10:53:04 +08:00
|
|
|
- @subpage tutorial_threshold_inRange
|
|
|
|
|
2018-05-19 01:51:34 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2016-03-21 10:53:04 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Rishiraj Surti
|
|
|
|
|
|
|
|
Thresholding operations using inRange function.
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
- @subpage tutorial_filter_2d
|
|
|
|
|
2017-08-24 23:22:27 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Where we learn to design our own filters by using OpenCV functions
|
|
|
|
|
|
|
|
- @subpage tutorial_copyMakeBorder
|
|
|
|
|
2017-08-26 02:44:55 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
2017-03-02 02:44:34 +08:00
|
|
|
Where we learn how to pad our images
|
2014-11-27 20:39:05 +08:00
|
|
|
|
|
|
|
- @subpage tutorial_sobel_derivatives
|
|
|
|
|
2017-08-22 19:28:23 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
2017-03-02 02:44:34 +08:00
|
|
|
Where we learn how to calculate gradients and use them to detect edges
|
2014-11-27 20:39:05 +08:00
|
|
|
|
|
|
|
- @subpage tutorial_laplace_operator
|
|
|
|
|
2017-08-22 07:17:09 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
2017-03-02 02:44:34 +08:00
|
|
|
Where we learn about the *Laplace* operator and how to detect edges with it
|
2014-11-27 20:39:05 +08:00
|
|
|
|
|
|
|
- @subpage tutorial_canny_detector
|
|
|
|
|
2018-05-19 01:51:34 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
2017-03-02 02:44:34 +08:00
|
|
|
Where we learn a sophisticated alternative to detect edges
|
2014-11-27 20:39:05 +08:00
|
|
|
|
|
|
|
- @subpage tutorial_hough_lines
|
|
|
|
|
2017-08-27 07:02:29 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Where we learn how to detect lines
|
|
|
|
|
|
|
|
- @subpage tutorial_hough_circle
|
|
|
|
|
2017-08-26 22:11:46 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Where we learn how to detect circles
|
|
|
|
|
|
|
|
- @subpage tutorial_remap
|
|
|
|
|
2018-05-19 01:51:34 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Where we learn how to manipulate pixels locations
|
|
|
|
|
|
|
|
- @subpage tutorial_warp_affine
|
|
|
|
|
2018-05-24 01:44:27 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Where we learn how to rotate, translate and scale our images
|
|
|
|
|
|
|
|
- @subpage tutorial_histogram_equalization
|
|
|
|
|
2018-05-24 01:44:27 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Where we learn how to improve the contrast in our images
|
|
|
|
|
|
|
|
- @subpage tutorial_histogram_calculation
|
|
|
|
|
2018-05-24 01:44:27 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Where we learn how to create and generate histograms
|
|
|
|
|
|
|
|
- @subpage tutorial_histogram_comparison
|
|
|
|
|
2018-05-24 01:44:27 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Where we learn to calculate metrics between histograms
|
|
|
|
|
|
|
|
- @subpage tutorial_back_projection
|
|
|
|
|
2018-05-24 01:44:27 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*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
|
|
|
|
|
2017-05-12 05:42:04 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Where we learn how to match templates in an image
|
|
|
|
|
|
|
|
- @subpage tutorial_find_contours
|
|
|
|
|
2018-06-11 05:57:11 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Where we learn how to find contours of objects in our image
|
|
|
|
|
|
|
|
- @subpage tutorial_hull
|
|
|
|
|
2018-06-11 05:57:11 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
2017-03-02 02:44:34 +08:00
|
|
|
Where we learn how to get hull contours and draw them
|
2014-11-27 20:39:05 +08:00
|
|
|
|
|
|
|
- @subpage tutorial_bounding_rects_circles
|
|
|
|
|
2018-06-11 05:57:11 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
2017-03-02 02:44:34 +08:00
|
|
|
Where we learn how to obtain bounding boxes and circles for our contours
|
2014-11-27 20:39:05 +08:00
|
|
|
|
|
|
|
- @subpage tutorial_bounding_rotated_ellipses
|
|
|
|
|
2018-06-11 05:57:11 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
2017-03-02 02:44:34 +08:00
|
|
|
Where we learn how to obtain rotated bounding boxes and ellipses for our contours
|
2014-11-27 20:39:05 +08:00
|
|
|
|
|
|
|
- @subpage tutorial_moments
|
|
|
|
|
2018-06-11 05:57:11 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Where we learn to calculate the moments of an image
|
|
|
|
|
|
|
|
- @subpage tutorial_point_polygon_test
|
|
|
|
|
2018-06-11 05:57:11 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2014-11-27 20:39:05 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Ana Huamán
|
|
|
|
|
|
|
|
Where we learn how to calculate distances from the image to contours
|
2015-01-21 11:49:31 +08:00
|
|
|
|
|
|
|
- @subpage tutorial_distance_transform
|
|
|
|
|
2018-06-28 00:48:32 +08:00
|
|
|
*Languages:* C++, Java, Python
|
|
|
|
|
2015-01-21 11:49:31 +08:00
|
|
|
*Compatibility:* \> OpenCV 2.0
|
|
|
|
|
|
|
|
*Author:* Theodore Tsesmelis
|
|
|
|
|
2017-03-02 02:44:34 +08:00
|
|
|
Where we learn to segment objects using Laplacian filtering, the Distance Transformation and the Watershed algorithm.
|
2018-07-24 17:54:17 +08:00
|
|
|
|
|
|
|
- @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.
|