|
|
|
Image Moments {#tutorial_moments}
|
|
|
|
=============
|
|
|
|
|
|
|
|
@tableofcontents
|
|
|
|
|
|
|
|
@prev_tutorial{tutorial_bounding_rotated_ellipses}
|
|
|
|
@next_tutorial{tutorial_point_polygon_test}
|
|
|
|
|
|
|
|
| | |
|
|
|
|
| -: | :- |
|
|
|
|
| Original author | Ana Huamán |
|
|
|
|
| Compatibility | OpenCV >= 3.0 |
|
|
|
|
|
|
|
|
Goal
|
|
|
|
----
|
|
|
|
|
|
|
|
In this tutorial you will learn how to:
|
|
|
|
|
|
|
|
- Use the OpenCV function @ref cv::moments
|
|
|
|
- Use the OpenCV function @ref cv::contourArea
|
|
|
|
- Use the OpenCV function @ref cv::arcLength
|
|
|
|
|
|
|
|
Theory
|
|
|
|
------
|
|
|
|
|
|
|
|
Code
|
|
|
|
----
|
|
|
|
|
|
|
|
@add_toggle_cpp
|
|
|
|
This tutorial code's is shown lines below. You can also download it from
|
|
|
|
[here](https://github.com/opencv/opencv/tree/master/samples/cpp/tutorial_code/ShapeDescriptors/moments_demo.cpp)
|
|
|
|
@include samples/cpp/tutorial_code/ShapeDescriptors/moments_demo.cpp
|
|
|
|
@end_toggle
|
|
|
|
|
|
|
|
@add_toggle_java
|
|
|
|
This tutorial code's is shown lines below. You can also download it from
|
|
|
|
[here](https://github.com/opencv/opencv/tree/master/samples/java/tutorial_code/ShapeDescriptors/moments/MomentsDemo.java)
|
|
|
|
@include samples/java/tutorial_code/ShapeDescriptors/moments/MomentsDemo.java
|
|
|
|
@end_toggle
|
|
|
|
|
|
|
|
@add_toggle_python
|
|
|
|
This tutorial code's is shown lines below. You can also download it from
|
|
|
|
[here](https://github.com/opencv/opencv/tree/master/samples/python/tutorial_code/ShapeDescriptors/moments/moments_demo.py)
|
|
|
|
@include samples/python/tutorial_code/ShapeDescriptors/moments/moments_demo.py
|
|
|
|
@end_toggle
|
|
|
|
|
|
|
|
Explanation
|
|
|
|
-----------
|
|
|
|
|
|
|
|
Result
|
|
|
|
------
|
|
|
|
|
|
|
|
Here it is:
|
|
|
|
![](images/Moments_Source_Image.jpg)
|
|
|
|
![](images/Moments_Result1.jpg)
|
|
|
|
![](images/Moments_Result2.jpg)
|