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

    *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++

    *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.
