.. _Table-Of-Content-ImgProc:

*imgproc* module. Image Processing
-----------------------------------------------------------

In this section you will learn about the image processing (manipulation) functions inside OpenCV.

.. include:: ../../definitions/tocDefinitions.rst


+
  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |ImageProcessing_1|  **Title:** :ref:`Smoothing`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Let's take a look at some basic linear filters!

  ===================== ==============================================

  .. |ImageProcessing_1| image:: images/Smoothing_Tutorial_Cover.jpg
                         :height: 90pt
                         :width:  90pt

+
  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |ImageProcessing_2|  **Title:** :ref:`Morphology_1`

                        *Compatibility:* > OpenCV 2.0

                        Author: |Author_AnaH|

                        Let's *change* the shape of objects!

  ===================== ==============================================

  .. |ImageProcessing_2| image:: images/Morphology_1_Tutorial_Cover.jpg
                         :height: 90pt
                         :width:  90pt

+
  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ================= ==================================================
   |Morphology_2|   **Title:** :ref:`Morphology_2`

                    *Compatibility:* > OpenCV 2.0

                    *Author:* |Author_AnaH|

                    Here we investigate different morphology operators

  ================= ==================================================

  .. |Morphology_2| image:: images/Morphology_2_Tutorial_Cover.jpg
                     :height: 90pt
                     :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |Pyramids|           **Title:** :ref:`Pyramids`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        What if I need a bigger/smaller image?

  ===================== ==============================================

  .. |Pyramids| image:: images/Pyramids_Tutorial_Cover.jpg
                      :height: 90pt
                      :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |Threshold|          **Title:** :ref:`Basic_Threshold`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        After so much processing, it is time to decide which pixels stay!

  ===================== ==============================================

  .. |Threshold| image:: images/Threshold_Tutorial_Cover.jpg
                      :height: 90pt
                      :width:  90pt

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

+
  ===================== ==============================================
   |Filter_2D|          **Title:** :ref:`filter_2d`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn to design our own filters by using OpenCV functions

  ===================== ==============================================

  .. |Filter_2D| image:: images/imgtrans/Filter_2D_Tutorial_Cover.jpg
                      :height: 90pt
                      :width:  90pt

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

+
  ===================== ==============================================
   |CopyMakeBorder|     **Title:** :ref:`copyMakeBorderTutorial`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to pad our images!

  ===================== ==============================================

  .. |CopyMakeBorder| image:: images/imgtrans/CopyMakeBorder_Tutorial_Cover.jpg
                           :height: 90pt
                           :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |SobelDerivatives|   **Title:** :ref:`sobel_derivatives`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to calculate gradients and use them to detect edges!

  ===================== ==============================================

  .. |SobelDerivatives| image:: images/imgtrans/Sobel_Derivatives_Tutorial_Cover.jpg
                             :height: 90pt
                             :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |LaplaceOperator|    **Title:** :ref:`laplace_operator`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn about the *Laplace* operator and how to detect edges with it.

  ===================== ==============================================

  .. |LaplaceOperator| image:: images/imgtrans/Laplace_Operator_Tutorial_Cover.jpg
                             :height: 90pt
                             :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |CannyDetector|      **Title:** :ref:`canny_detector`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn a sophisticated alternative to detect edges.

  ===================== ==============================================

  .. |CannyDetector| image:: images/imgtrans/Canny_Detector_Tutorial_Cover.jpg
                           :height: 90pt
                           :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |HoughLines|         **Title:** :ref:`hough_lines`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to detect lines

  ===================== ==============================================

  .. |HoughLines| image:: images/imgtrans/Hough_Lines_Tutorial_Cover.jpg
                        :height: 90pt
                        :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |HoughCircle|        **Title:** :ref:`hough_circle`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to detect circles

  ===================== ==============================================

  .. |HoughCircle| image:: images/imgtrans/Hough_Circle_Tutorial_Cover.jpg
                         :height: 90pt
                         :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |Remap|              **Title:** :ref:`remap`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to manipulate pixels locations

  ===================== ==============================================

  .. |Remap| image:: images/imgtrans/Remap_Tutorial_Cover.jpg
                   :height: 90pt
                   :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |WarpAffine|         **Title:** :ref:`warp_affine`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to rotate, translate and scale our images

  ===================== ==============================================

  .. |WarpAffine| image:: images/imgtrans/Warp_Affine_Tutorial_Cover.jpg
                        :height: 90pt
                        :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |HistEqualization|   **Title:** :ref:`histogram_equalization`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to improve the contrast in our images

  ===================== ==============================================

  .. |HistEqualization| image:: images/histograms/Histogram_Equalization_Tutorial_Cover.jpg
                              :height: 90pt
                              :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |HistCalculation|    **Title:** :ref:`histogram_calculation`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to create and generate histograms

  ===================== ==============================================

  .. |HistCalculation| image:: images/histograms/Histogram_Calculation_Tutorial_Cover.jpg
                             :height: 90pt
                             :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |HistComparison|     **Title:** :ref:`histogram_comparison`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn to calculate metrics between histograms

  ===================== ==============================================

  .. |HistComparison| image:: images/histograms/Histogram_Comparison_Tutorial_Cover.jpg
                            :height: 90pt
                            :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |BackProjection|     **Title:** :ref:`back_projection`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to use histograms to find similar objects in images

  ===================== ==============================================

  .. |BackProjection| image:: images/histograms/Back_Projection_Tutorial_Cover.jpg
                            :height: 90pt
                            :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |TemplateMatching|   **Title:** :ref:`template_matching`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to match templates in an image

  ===================== ==============================================

  .. |TemplateMatching| image:: images/histograms/Template_Matching_Tutorial_Cover.jpg
                              :height: 90pt
                              :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |FindContours|       **Title:** :ref:`find_contours`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to find contours of objects in our image

  ===================== ==============================================

  .. |FindContours| image:: images/shapedescriptors/Find_Contours_Tutorial_Cover.jpg
                          :height: 90pt
                          :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |Hull|               **Title:** :ref:`hull`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to get hull contours and draw them!

  ===================== ==============================================

  .. |Hull| image:: images/shapedescriptors/Hull_Tutorial_Cover.jpg
                 :height: 90pt
                 :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv

  ===================== ==============================================
   |BRC|                **Title:** :ref:`bounding_rects_circles`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to obtain bounding boxes and circles for our contours.

  ===================== ==============================================

  .. |BRC| image:: images/shapedescriptors/Bounding_Rects_Circles_Tutorial_Cover.jpg
                :height: 90pt
                :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv


  ===================== ==============================================
   |BRE|                **Title:** :ref:`bounding_rotated_ellipses`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to obtain rotated bounding boxes and ellipses for our contours.

  ===================== ==============================================

  .. |BRE| image:: images/shapedescriptors/Bounding_Rotated_Ellipses_Tutorial_Cover.jpg
                :height: 90pt
                :width:  90pt

+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv


  ===================== ==============================================
   |MU|                 **Title:** :ref:`moments`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn to calculate the moments of an image

  ===================== ==============================================

  .. |MU| image:: images/shapedescriptors/Moments_Tutorial_Cover.jpg
               :height: 90pt
               :width:  90pt


+

  .. tabularcolumns:: m{100pt} m{300pt}
  .. cssclass:: toctableopencv


  ===================== ==============================================
   |PPT|                **Title:** :ref:`point_polygon_test`

                        *Compatibility:* > OpenCV 2.0

                        *Author:* |Author_AnaH|

                        Where we learn how to calculate distances from the image to contours

  ===================== ==============================================

  .. |PPT| image:: images/shapedescriptors/Point_Polygon_Test_Tutorial_Cover.jpg
                :height: 90pt
                :width:  90pt

.. raw:: latex

   \pagebreak

.. toctree::
   :hidden:

   ../gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter
   ../erosion_dilatation/erosion_dilatation
   ../opening_closing_hats/opening_closing_hats
   ../pyramids/pyramids
   ../threshold/threshold
   ../imgtrans/filter_2d/filter_2d
   ../imgtrans/copyMakeBorder/copyMakeBorder
   ../imgtrans/sobel_derivatives/sobel_derivatives
   ../imgtrans/laplace_operator/laplace_operator
   ../imgtrans/canny_detector/canny_detector
   ../imgtrans/hough_lines/hough_lines
   ../imgtrans/hough_circle/hough_circle
   ../imgtrans/remap/remap
   ../imgtrans/warp_affine/warp_affine
   ../histograms/histogram_equalization/histogram_equalization
   ../histograms/histogram_calculation/histogram_calculation
   ../histograms/histogram_comparison/histogram_comparison
   ../histograms/back_projection/back_projection
   ../histograms/template_matching/template_matching
   ../shapedescriptors/find_contours/find_contours
   ../shapedescriptors/hull/hull
   ../shapedescriptors/bounding_rects_circles/bounding_rects_circles
   ../shapedescriptors/bounding_rotated_ellipses/bounding_rotated_ellipses
   ../shapedescriptors/moments/moments
   ../shapedescriptors/point_polygon_test/point_polygon_test
