|
|
|
Image Processing (imgproc module) {#tutorial_table_of_content_imgproc}
|
|
|
|
=================================
|
|
|
|
|
|
|
|
In this section you will learn about the image processing (manipulation) functions inside OpenCV.
|
|
|
|
|
|
|
|
- @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.
|
|
|
|
|
|
|
|
- @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
|
|
|
|
|
|
|
|
- @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_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
|
|
|
|
|
|
|
|
- @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.
|