Update documentation and samples

This commit is contained in:
Suleyman TURKMEN 2018-08-02 21:22:58 +03:00
parent 1c73e66edf
commit c61bc3a0cb
63 changed files with 365 additions and 303 deletions

View File

@ -1,6 +1,9 @@
Changing the contrast and brightness of an image! {#tutorial_basic_linear_transform} Changing the contrast and brightness of an image! {#tutorial_basic_linear_transform}
================================================= =================================================
@prev_tutorial{tutorial_adding_images}
@next_tutorial{tutorial_discrete_fourier_transform}
Goal Goal
---- ----

View File

@ -1,7 +1,7 @@
Discrete Fourier Transform {#tutorial_discrete_fourier_transform} Discrete Fourier Transform {#tutorial_discrete_fourier_transform}
========================== ==========================
@prev_tutorial{tutorial_random_generator_and_text} @prev_tutorial{tutorial_basic_linear_transform}
@next_tutorial{tutorial_file_input_output_with_xml_yml} @next_tutorial{tutorial_file_input_output_with_xml_yml}
Goal Goal

View File

@ -1,6 +1,9 @@
File Input and Output using XML and YAML files {#tutorial_file_input_output_with_xml_yml} File Input and Output using XML and YAML files {#tutorial_file_input_output_with_xml_yml}
============================================== ==============================================
@prev_tutorial{tutorial_discrete_fourier_transform}
@next_tutorial{tutorial_interoperability_with_OpenCV_1}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
How to scan images, lookup tables and time measurement with OpenCV {#tutorial_how_to_scan_images} How to scan images, lookup tables and time measurement with OpenCV {#tutorial_how_to_scan_images}
================================================================== ==================================================================
@prev_tutorial{tutorial_mat_the_basic_image_container}
@next_tutorial{tutorial_mat_mask_operations}
Goal Goal
---- ----

View File

@ -1,6 +1,8 @@
How to use the OpenCV parallel_for_ to parallelize your code {#tutorial_how_to_use_OpenCV_parallel_for_} How to use the OpenCV parallel_for_ to parallelize your code {#tutorial_how_to_use_OpenCV_parallel_for_}
================================================================== ==================================================================
@prev_tutorial{tutorial_how_to_use_ippa_conversion}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Intel® IPP Asynchronous C/C++ library in OpenCV {#tutorial_how_to_use_ippa_conversion} Intel® IPP Asynchronous C/C++ library in OpenCV {#tutorial_how_to_use_ippa_conversion}
=============================================== ===============================================
@prev_tutorial{tutorial_interoperability_with_OpenCV_1}
@next_tutorial{tutorial_how_to_use_OpenCV_parallel_for_}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Interoperability with OpenCV 1 {#tutorial_interoperability_with_OpenCV_1} Interoperability with OpenCV 1 {#tutorial_interoperability_with_OpenCV_1}
============================== ==============================
@prev_tutorial{tutorial_file_input_output_with_xml_yml}
@next_tutorial{tutorial_how_to_use_ippa_conversion}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Operations with images {#tutorial_mat_operations} Operations with images {#tutorial_mat_operations}
====================== ======================
@prev_tutorial{tutorial_mat_mask_operations}
@next_tutorial{tutorial_adding_images}
Input/Output Input/Output
------------ ------------

View File

@ -1,6 +1,8 @@
Mat - The Basic Image Container {#tutorial_mat_the_basic_image_container} Mat - The Basic Image Container {#tutorial_mat_the_basic_image_container}
=============================== ===============================
@next_tutorial{tutorial_how_to_scan_images}
Goal Goal
---- ----

View File

@ -62,24 +62,6 @@ understanding how to manipulate the images on a pixel level.
We will learn how to change our image appearance! We will learn how to change our image appearance!
- @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_discrete_fourier_transform - @subpage tutorial_discrete_fourier_transform
*Languages:* C++, Java, Python *Languages:* C++, Java, Python

View File

@ -1,7 +1,6 @@
Basic Drawing {#tutorial_basic_geometric_drawing} Basic Drawing {#tutorial_basic_geometric_drawing}
============= =============
@prev_tutorial{tutorial_basic_linear_transform}
@next_tutorial{tutorial_random_generator_and_text} @next_tutorial{tutorial_random_generator_and_text}
Goals Goals
@ -82,20 +81,20 @@ Code
@add_toggle_cpp @add_toggle_cpp
- This code is in your OpenCV sample folder. Otherwise you can grab it from - This code is in your OpenCV sample folder. Otherwise you can grab it from
[here](https://raw.githubusercontent.com/opencv/opencv/3.4/samples/cpp/tutorial_code/core/Matrix/Drawing_1.cpp) [here](https://raw.githubusercontent.com/opencv/opencv/3.4/samples/cpp/tutorial_code/ImgProc/basic_drawing/Drawing_1.cpp)
@include samples/cpp/tutorial_code/core/Matrix/Drawing_1.cpp @include samples/cpp/tutorial_code/ImgProc/basic_drawing/Drawing_1.cpp
@end_toggle @end_toggle
@add_toggle_java @add_toggle_java
- This code is in your OpenCV sample folder. Otherwise you can grab it from - This code is in your OpenCV sample folder. Otherwise you can grab it from
[here](https://raw.githubusercontent.com/opencv/opencv/3.4/samples/java/tutorial_code/core/BasicGeometricDrawing/BasicGeometricDrawing.java) [here](https://raw.githubusercontent.com/opencv/opencv/3.4/samples/java/tutorial_code/ImgProc/BasicGeometricDrawing/BasicGeometricDrawing.java)
@include samples/java/tutorial_code/core/BasicGeometricDrawing/BasicGeometricDrawing.java @include samples/java/tutorial_code/ImgProc/BasicGeometricDrawing/BasicGeometricDrawing.java
@end_toggle @end_toggle
@add_toggle_python @add_toggle_python
- This code is in your OpenCV sample folder. Otherwise you can grab it from - This code is in your OpenCV sample folder. Otherwise you can grab it from
[here](https://raw.githubusercontent.com/opencv/opencv/3.4/samples/python/tutorial_code/core/BasicGeometricDrawing/basic_geometric_drawing.py) [here](https://raw.githubusercontent.com/opencv/opencv/3.4/samples/python/tutorial_code/imgProc/BasicGeometricDrawing/basic_geometric_drawing.py)
@include samples/python/tutorial_code/core/BasicGeometricDrawing/basic_geometric_drawing.py @include samples/python/tutorial_code/imgProc/BasicGeometricDrawing/basic_geometric_drawing.py
@end_toggle @end_toggle
Explanation Explanation
@ -104,42 +103,42 @@ Explanation
Since we plan to draw two examples (an atom and a rook), we have to create two images and two Since we plan to draw two examples (an atom and a rook), we have to create two images and two
windows to display them. windows to display them.
@add_toggle_cpp @add_toggle_cpp
@snippet cpp/tutorial_code/core/Matrix/Drawing_1.cpp create_images @snippet cpp/tutorial_code/ImgProc/basic_drawing/Drawing_1.cpp create_images
@end_toggle @end_toggle
@add_toggle_java @add_toggle_java
@snippet java/tutorial_code/core/BasicGeometricDrawing/BasicGeometricDrawing.java create_images @snippet java/tutorial_code/ImgProc/BasicGeometricDrawing/BasicGeometricDrawing.java create_images
@end_toggle @end_toggle
@add_toggle_python @add_toggle_python
@snippet python/tutorial_code/core/BasicGeometricDrawing/basic_geometric_drawing.py create_images @snippet python/tutorial_code/imgProc/BasicGeometricDrawing/basic_geometric_drawing.py create_images
@end_toggle @end_toggle
We created functions to draw different geometric shapes. For instance, to draw the atom we used We created functions to draw different geometric shapes. For instance, to draw the atom we used
**MyEllipse** and **MyFilledCircle**: **MyEllipse** and **MyFilledCircle**:
@add_toggle_cpp @add_toggle_cpp
@snippet cpp/tutorial_code/core/Matrix/Drawing_1.cpp draw_atom @snippet cpp/tutorial_code/ImgProc/basic_drawing/Drawing_1.cpp draw_atom
@end_toggle @end_toggle
@add_toggle_java @add_toggle_java
@snippet java/tutorial_code/core/BasicGeometricDrawing/BasicGeometricDrawing.java draw_atom @snippet java/tutorial_code/ImgProc/BasicGeometricDrawing/BasicGeometricDrawing.java draw_atom
@end_toggle @end_toggle
@add_toggle_python @add_toggle_python
@snippet python/tutorial_code/core/BasicGeometricDrawing/basic_geometric_drawing.py draw_atom @snippet python/tutorial_code/imgProc/BasicGeometricDrawing/basic_geometric_drawing.py draw_atom
@end_toggle @end_toggle
And to draw the rook we employed **MyLine**, **rectangle** and a **MyPolygon**: And to draw the rook we employed **MyLine**, **rectangle** and a **MyPolygon**:
@add_toggle_cpp @add_toggle_cpp
@snippet cpp/tutorial_code/core/Matrix/Drawing_1.cpp draw_rook @snippet cpp/tutorial_code/ImgProc/basic_drawing/Drawing_1.cpp draw_rook
@end_toggle @end_toggle
@add_toggle_java @add_toggle_java
@snippet java/tutorial_code/core/BasicGeometricDrawing/BasicGeometricDrawing.java draw_rook @snippet java/tutorial_code/ImgProc/BasicGeometricDrawing/BasicGeometricDrawing.java draw_rook
@end_toggle @end_toggle
@add_toggle_python @add_toggle_python
@snippet python/tutorial_code/core/BasicGeometricDrawing/basic_geometric_drawing.py draw_rook @snippet python/tutorial_code/imgProc/BasicGeometricDrawing/basic_geometric_drawing.py draw_rook
@end_toggle @end_toggle
@ -149,15 +148,15 @@ Let's check what is inside each of these functions:
<H4>MyLine</H4> <H4>MyLine</H4>
@add_toggle_cpp @add_toggle_cpp
@snippet cpp/tutorial_code/core/Matrix/Drawing_1.cpp my_line @snippet cpp/tutorial_code/ImgProc/basic_drawing/Drawing_1.cpp my_line
@end_toggle @end_toggle
@add_toggle_java @add_toggle_java
@snippet java/tutorial_code/core/BasicGeometricDrawing/BasicGeometricDrawing.java my_line @snippet java/tutorial_code/ImgProc/BasicGeometricDrawing/BasicGeometricDrawing.java my_line
@end_toggle @end_toggle
@add_toggle_python @add_toggle_python
@snippet python/tutorial_code/core/BasicGeometricDrawing/basic_geometric_drawing.py my_line @snippet python/tutorial_code/imgProc/BasicGeometricDrawing/basic_geometric_drawing.py my_line
@end_toggle @end_toggle
- As we can see, **MyLine** just call the function **line()** , which does the following: - As we can see, **MyLine** just call the function **line()** , which does the following:
@ -170,15 +169,15 @@ Let's check what is inside each of these functions:
<H4>MyEllipse</H4> <H4>MyEllipse</H4>
@add_toggle_cpp @add_toggle_cpp
@snippet cpp/tutorial_code/core/Matrix/Drawing_1.cpp my_ellipse @snippet cpp/tutorial_code/ImgProc/basic_drawing/Drawing_1.cpp my_ellipse
@end_toggle @end_toggle
@add_toggle_java @add_toggle_java
@snippet java/tutorial_code/core/BasicGeometricDrawing/BasicGeometricDrawing.java my_ellipse @snippet java/tutorial_code/ImgProc/BasicGeometricDrawing/BasicGeometricDrawing.java my_ellipse
@end_toggle @end_toggle
@add_toggle_python @add_toggle_python
@snippet python/tutorial_code/core/BasicGeometricDrawing/basic_geometric_drawing.py my_ellipse @snippet python/tutorial_code/imgProc/BasicGeometricDrawing/basic_geometric_drawing.py my_ellipse
@end_toggle @end_toggle
- From the code above, we can observe that the function **ellipse()** draws an ellipse such - From the code above, we can observe that the function **ellipse()** draws an ellipse such
@ -194,15 +193,15 @@ Let's check what is inside each of these functions:
<H4>MyFilledCircle</H4> <H4>MyFilledCircle</H4>
@add_toggle_cpp @add_toggle_cpp
@snippet cpp/tutorial_code/core/Matrix/Drawing_1.cpp my_filled_circle @snippet cpp/tutorial_code/ImgProc/basic_drawing/Drawing_1.cpp my_filled_circle
@end_toggle @end_toggle
@add_toggle_java @add_toggle_java
@snippet java/tutorial_code/core/BasicGeometricDrawing/BasicGeometricDrawing.java my_filled_circle @snippet java/tutorial_code/ImgProc/BasicGeometricDrawing/BasicGeometricDrawing.java my_filled_circle
@end_toggle @end_toggle
@add_toggle_python @add_toggle_python
@snippet python/tutorial_code/core/BasicGeometricDrawing/basic_geometric_drawing.py my_filled_circle @snippet python/tutorial_code/imgProc/BasicGeometricDrawing/basic_geometric_drawing.py my_filled_circle
@end_toggle @end_toggle
- Similar to the ellipse function, we can observe that *circle* receives as arguments: - Similar to the ellipse function, we can observe that *circle* receives as arguments:
@ -215,15 +214,15 @@ Let's check what is inside each of these functions:
<H4>MyPolygon</H4> <H4>MyPolygon</H4>
@add_toggle_cpp @add_toggle_cpp
@snippet cpp/tutorial_code/core/Matrix/Drawing_1.cpp my_polygon @snippet cpp/tutorial_code/ImgProc/basic_drawing/Drawing_1.cpp my_polygon
@end_toggle @end_toggle
@add_toggle_java @add_toggle_java
@snippet java/tutorial_code/core/BasicGeometricDrawing/BasicGeometricDrawing.java my_polygon @snippet java/tutorial_code/ImgProc/BasicGeometricDrawing/BasicGeometricDrawing.java my_polygon
@end_toggle @end_toggle
@add_toggle_python @add_toggle_python
@snippet python/tutorial_code/core/BasicGeometricDrawing/basic_geometric_drawing.py my_polygon @snippet python/tutorial_code/imgProc/BasicGeometricDrawing/basic_geometric_drawing.py my_polygon
@end_toggle @end_toggle
- To draw a filled polygon we use the function **fillPoly()** . We note that: - To draw a filled polygon we use the function **fillPoly()** . We note that:
@ -235,15 +234,15 @@ Let's check what is inside each of these functions:
<H4>rectangle</H4> <H4>rectangle</H4>
@add_toggle_cpp @add_toggle_cpp
@snippet cpp/tutorial_code/core/Matrix/Drawing_1.cpp rectangle @snippet cpp/tutorial_code/ImgProc/basic_drawing/Drawing_1.cpp rectangle
@end_toggle @end_toggle
@add_toggle_java @add_toggle_java
@snippet java/tutorial_code/core/BasicGeometricDrawing/BasicGeometricDrawing.java rectangle @snippet java/tutorial_code/ImgProc/BasicGeometricDrawing/BasicGeometricDrawing.java rectangle
@end_toggle @end_toggle
@add_toggle_python @add_toggle_python
@snippet python/tutorial_code/core/BasicGeometricDrawing/basic_geometric_drawing.py rectangle @snippet python/tutorial_code/imgProc/BasicGeometricDrawing/basic_geometric_drawing.py rectangle
@end_toggle @end_toggle
- Finally we have the @ref cv::rectangle function (we did not create a special function for - Finally we have the @ref cv::rectangle function (we did not create a special function for

View File

@ -1,6 +1,9 @@
Eroding and Dilating {#tutorial_erosion_dilatation} Eroding and Dilating {#tutorial_erosion_dilatation}
==================== ====================
@prev_tutorial{tutorial_gausian_median_blur_bilateral_filter}
@next_tutorial{tutorial_opening_closing_hats}
Goal Goal
---- ----

View File

@ -1,6 +1,7 @@
Smoothing Images {#tutorial_gausian_median_blur_bilateral_filter} Smoothing Images {#tutorial_gausian_median_blur_bilateral_filter}
================ ================
@prev_tutorial{tutorial_random_generator_and_text}
@next_tutorial{tutorial_erosion_dilatation} @next_tutorial{tutorial_erosion_dilatation}
Goal Goal

View File

@ -1,6 +1,9 @@
Back Projection {#tutorial_back_projection} Back Projection {#tutorial_back_projection}
=============== ===============
@prev_tutorial{tutorial_histogram_comparison}
@next_tutorial{tutorial_template_matching}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Histogram Calculation {#tutorial_histogram_calculation} Histogram Calculation {#tutorial_histogram_calculation}
===================== =====================
@prev_tutorial{tutorial_histogram_equalization}
@next_tutorial{tutorial_histogram_comparison}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Histogram Comparison {#tutorial_histogram_comparison} Histogram Comparison {#tutorial_histogram_comparison}
==================== ====================
@prev_tutorial{tutorial_histogram_calculation}
@next_tutorial{tutorial_back_projection}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Histogram Equalization {#tutorial_histogram_equalization} Histogram Equalization {#tutorial_histogram_equalization}
====================== ======================
@prev_tutorial{tutorial_warp_affine}
@next_tutorial{tutorial_histogram_calculation}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Canny Edge Detector {#tutorial_canny_detector} Canny Edge Detector {#tutorial_canny_detector}
=================== ===================
@prev_tutorial{tutorial_laplace_operator}
@next_tutorial{tutorial_hough_lines}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Image Segmentation with Distance Transform and Watershed Algorithm {#tutorial_distance_transform} Image Segmentation with Distance Transform and Watershed Algorithm {#tutorial_distance_transform}
============= =============
@prev_tutorial{tutorial_point_polygon_test}
@next_tutorial{tutorial_out_of_focus_deblur_filter}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Remapping {#tutorial_remap} Remapping {#tutorial_remap}
========= =========
@prev_tutorial{tutorial_hough_circle}
@next_tutorial{tutorial_warp_affine}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Affine Transformations {#tutorial_warp_affine} Affine Transformations {#tutorial_warp_affine}
====================== ======================
@prev_tutorial{tutorial_remap}
@next_tutorial{tutorial_histogram_equalization}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
More Morphology Transformations {#tutorial_opening_closing_hats} More Morphology Transformations {#tutorial_opening_closing_hats}
=============================== ===============================
@prev_tutorial{tutorial_erosion_dilatation}
@next_tutorial{tutorial_hitOrMiss}
Goal Goal
---- ----

View File

@ -1,6 +1,8 @@
Out-of-focus Deblur Filter {#tutorial_out_of_focus_deblur_filter} Out-of-focus Deblur Filter {#tutorial_out_of_focus_deblur_filter}
========================== ==========================
@prev_tutorial{tutorial_distance_transform}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Random generator and text with OpenCV {#tutorial_random_generator_and_text} Random generator and text with OpenCV {#tutorial_random_generator_and_text}
===================================== =====================================
@prev_tutorial{tutorial_basic_geometric_drawing}
@next_tutorial{tutorial_gausian_median_blur_bilateral_filter}
Goals Goals
----- -----

View File

@ -1,6 +1,9 @@
Creating Bounding boxes and circles for contours {#tutorial_bounding_rects_circles} Creating Bounding boxes and circles for contours {#tutorial_bounding_rects_circles}
================================================ ================================================
@prev_tutorial{tutorial_hull}
@next_tutorial{tutorial_bounding_rotated_ellipses}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Creating Bounding rotated boxes and ellipses for contours {#tutorial_bounding_rotated_ellipses} Creating Bounding rotated boxes and ellipses for contours {#tutorial_bounding_rotated_ellipses}
========================================================= =========================================================
@prev_tutorial{tutorial_bounding_rects_circles}
@next_tutorial{tutorial_moments}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Finding contours in your image {#tutorial_find_contours} Finding contours in your image {#tutorial_find_contours}
============================== ==============================
@prev_tutorial{tutorial_template_matching}
@next_tutorial{tutorial_hull}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Convex Hull {#tutorial_hull} Convex Hull {#tutorial_hull}
=========== ===========
@prev_tutorial{tutorial_find_contours}
@next_tutorial{tutorial_bounding_rects_circles}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Image Moments {#tutorial_moments} Image Moments {#tutorial_moments}
============= =============
@prev_tutorial{tutorial_bounding_rotated_ellipses}
@next_tutorial{tutorial_point_polygon_test}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Point Polygon Test {#tutorial_point_polygon_test} Point Polygon Test {#tutorial_point_polygon_test}
================== ==================
@prev_tutorial{tutorial_moments}
@next_tutorial{tutorial_distance_transform}
Goal Goal
---- ----

View File

@ -3,6 +3,24 @@ Image Processing (imgproc module) {#tutorial_table_of_content_imgproc}
In this section you will learn about the image processing (manipulation) functions inside OpenCV. 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 - @subpage tutorial_gausian_median_blur_bilateral_filter
*Languages:* C++, Java, Python *Languages:* C++, Java, Python

View File

@ -1,6 +1,9 @@
Basic Thresholding Operations {#tutorial_threshold} Basic Thresholding Operations {#tutorial_threshold}
============================= =============================
@prev_tutorial{tutorial_pyramids}
@next_tutorial{tutorial_threshold_inRange}
Goal Goal
---- ----

View File

@ -1,6 +1,9 @@
Thresholding Operations using inRange {#tutorial_threshold_inRange} Thresholding Operations using inRange {#tutorial_threshold_inRange}
===================================== =====================================
@prev_tutorial{tutorial_threshold}
@next_tutorial{tutorial_filter_2d}
Goal Goal
---- ----

View File

@ -24,17 +24,7 @@ Explanation
The most important code part is: The most important code part is:
@code{.cpp} @snippet cpp/stitching.cpp stitching
Mat pano;
Ptr<Stitcher> stitcher = Stitcher::create(mode, try_use_gpu);
Stitcher::Status status = stitcher->stitch(imgs, pano);
if (status != Stitcher::OK)
{
cout << "Can't stitch images, error code = " << int(status) << endl;
return -1;
}
@endcode
A new instance of stitcher is created and the @ref cv::Stitcher::stitch will A new instance of stitcher is created and the @ref cv::Stitcher::stitch will
do all the hard work. do all the hard work.

View File

@ -307,7 +307,7 @@ optimization procedures like calibrateCamera, stereoCalibrate, or solvePnP .
*/ */
CV_EXPORTS_W void Rodrigues( InputArray src, OutputArray dst, OutputArray jacobian = noArray() ); CV_EXPORTS_W void Rodrigues( InputArray src, OutputArray dst, OutputArray jacobian = noArray() );
/** @example pose_from_homography.cpp /** @example samples/cpp/tutorial_code/features2D/Homography/pose_from_homography.cpp
An example program about pose estimation from coplanar points An example program about pose estimation from coplanar points
Check @ref tutorial_homography "the corresponding tutorial" for more details Check @ref tutorial_homography "the corresponding tutorial" for more details
@ -526,7 +526,7 @@ CV_EXPORTS_W void projectPoints( InputArray objectPoints,
OutputArray jacobian = noArray(), OutputArray jacobian = noArray(),
double aspectRatio = 0 ); double aspectRatio = 0 );
/** @example homography_from_camera_displacement.cpp /** @example samples/cpp/tutorial_code/features2D/Homography/homography_from_camera_displacement.cpp
An example program about homography from the camera displacement An example program about homography from the camera displacement
Check @ref tutorial_homography "the corresponding tutorial" for more details Check @ref tutorial_homography "the corresponding tutorial" for more details
@ -1966,7 +1966,7 @@ CV_EXPORTS_W cv::Mat estimateAffinePartial2D(InputArray from, InputArray to, Out
size_t maxIters = 2000, double confidence = 0.99, size_t maxIters = 2000, double confidence = 0.99,
size_t refineIters = 10); size_t refineIters = 10);
/** @example decompose_homography.cpp /** @example samples/cpp/tutorial_code/features2D/Homography/decompose_homography.cpp
An example program with homography decomposition. An example program with homography decomposition.
Check @ref tutorial_homography "the corresponding tutorial" for more details. Check @ref tutorial_homography "the corresponding tutorial" for more details.

View File

@ -273,9 +273,11 @@ of p and len.
*/ */
CV_EXPORTS_W int borderInterpolate(int p, int len, int borderType); CV_EXPORTS_W int borderInterpolate(int p, int len, int borderType);
/** @example copyMakeBorder_demo.cpp /** @example samples/cpp/tutorial_code/ImgTrans/copyMakeBorder_demo.cpp
An example using copyMakeBorder function An example using copyMakeBorder function.
Check @ref tutorial_copyMakeBorder "the corresponding tutorial" for more details
*/ */
/** @brief Forms a border around an image. /** @brief Forms a border around an image.
The function copies the source image into the middle of the destination image. The areas to the The function copies the source image into the middle of the destination image. The areas to the
@ -474,9 +476,10 @@ The function can also be emulated with a matrix expression, for example:
*/ */
CV_EXPORTS_W void scaleAdd(InputArray src1, double alpha, InputArray src2, OutputArray dst); CV_EXPORTS_W void scaleAdd(InputArray src1, double alpha, InputArray src2, OutputArray dst);
/** @example AddingImagesTrackbar.cpp /** @example samples/cpp/tutorial_code/HighGUI/AddingImagesTrackbar.cpp
Check @ref tutorial_trackbar "the corresponding tutorial" for more details
*/ */
/** @brief Calculates the weighted sum of two arrays. /** @brief Calculates the weighted sum of two arrays.
The function addWeighted calculates the weighted sum of two arrays as follows: The function addWeighted calculates the weighted sum of two arrays as follows:
@ -2527,10 +2530,14 @@ public:
Mat mean; //!< mean value subtracted before the projection and added after the back projection Mat mean; //!< mean value subtracted before the projection and added after the back projection
}; };
/** @example pca.cpp /** @example samples/cpp/pca.cpp
An example using %PCA for dimensionality reduction while maintaining an amount of variance An example using %PCA for dimensionality reduction while maintaining an amount of variance
*/ */
/** @example samples/cpp/tutorial_code/ml/introduction_to_pca/introduction_to_pca.cpp
Check @ref tutorial_introduction_to_pca "the corresponding tutorial" for more details
*/
/** /**
@brief Linear Discriminant Analysis @brief Linear Discriminant Analysis
@todo document this class @todo document this class
@ -2930,17 +2937,11 @@ public:
unsigned operator ()(unsigned N); unsigned operator ()(unsigned N);
unsigned operator ()(); unsigned operator ()();
/** @brief returns uniformly distributed integer random number from [a,b) range /** @brief returns uniformly distributed integer random number from [a,b) range*/
*/
int uniform(int a, int b); int uniform(int a, int b);
/** @brief returns uniformly distributed floating-point random number from [a,b) range /** @brief returns uniformly distributed floating-point random number from [a,b) range*/
*/
float uniform(float a, float b); float uniform(float a, float b);
/** @brief returns uniformly distributed double-precision floating-point random number from [a,b) range /** @brief returns uniformly distributed double-precision floating-point random number from [a,b) range*/
*/
double uniform(double a, double b); double uniform(double a, double b);
private: private:
@ -2954,7 +2955,7 @@ private:
//! @addtogroup core_cluster //! @addtogroup core_cluster
//! @{ //! @{
/** @example kmeans.cpp /** @example samples/cpp/kmeans.cpp
An example on K-means clustering An example on K-means clustering
*/ */

View File

@ -575,7 +575,7 @@ protected:
MatStep& operator = (const MatStep&); MatStep& operator = (const MatStep&);
}; };
/** @example cout_mat.cpp /** @example samples/cpp/cout_mat.cpp
An example demonstrating the serial out capabilities of cv::Mat An example demonstrating the serial out capabilities of cv::Mat
*/ */

View File

@ -287,12 +287,12 @@ element is a structure of 2 integers, followed by a single-precision floating-po
equivalent notations of the above specification are `iif`, `2i1f` and so forth. Other examples: `u` equivalent notations of the above specification are `iif`, `2i1f` and so forth. Other examples: `u`
means that the array consists of bytes, and `2d` means the array consists of pairs of doubles. means that the array consists of bytes, and `2d` means the array consists of pairs of doubles.
@see @ref filestorage.cpp @see @ref samples/cpp/filestorage.cpp
*/ */
//! @{ //! @{
/** @example filestorage.cpp /** @example samples/cpp/filestorage.cpp
A complete example using the FileStorage interface A complete example using the FileStorage interface
*/ */

View File

@ -59,6 +59,20 @@
A network training is in principle not supported. A network training is in principle not supported.
@} @}
*/ */
/** @example samples/dnn/classification.cpp
Check @ref tutorial_dnn_googlenet "the corresponding tutorial" for more details
*/
/** @example samples/dnn/colorization.cpp
*/
/** @example samples/dnn/object_detection.cpp
Check @ref tutorial_dnn_yolo "the corresponding tutorial" for more details
*/
/** @example samples/dnn/openpose.cpp
*/
/** @example samples/dnn/segmentation.cpp
*/
/** @example samples/dnn/text_detection.cpp
*/
#include <opencv2/dnn/dnn.hpp> #include <opencv2/dnn/dnn.hpp>
#endif /* OPENCV_DNN_HPP */ #endif /* OPENCV_DNN_HPP */

View File

@ -452,12 +452,13 @@ The function getWindowImageRect returns the client screen coordinates, width and
*/ */
CV_EXPORTS_W Rect getWindowImageRect(const String& winname); CV_EXPORTS_W Rect getWindowImageRect(const String& winname);
/** @example samples/cpp/create_mask.cpp
This program demonstrates using mouse events and how to make and use a mask image (black and white) .
*/
/** @brief Sets mouse handler for the specified window /** @brief Sets mouse handler for the specified window
@param winname Name of the window. @param winname Name of the window.
@param onMouse Mouse callback. See OpenCV samples, such as @param onMouse Callback function for mouse events. See OpenCV samples on how to specify and use the callback.
<https://github.com/opencv/opencv/tree/3.4/samples/cpp/ffilldemo.cpp>, on how to specify and
use the callback.
@param userdata The optional parameter passed to the callback. @param userdata The optional parameter passed to the callback.
*/ */
CV_EXPORTS void setMouseCallback(const String& winname, MouseCallback onMouse, void* userdata = 0); CV_EXPORTS void setMouseCallback(const String& winname, MouseCallback onMouse, void* userdata = 0);

View File

@ -1191,7 +1191,7 @@ protected:
//! @addtogroup imgproc_feature //! @addtogroup imgproc_feature
//! @{ //! @{
/** @example lsd_lines.cpp /** @example samples/cpp/lsd_lines.cpp
An example using the LineSegmentDetector An example using the LineSegmentDetector
\image html building_lsd.png "Sample output image" width=434 height=300 \image html building_lsd.png "Sample output image" width=434 height=300
*/ */
@ -1349,11 +1349,12 @@ operation is shifted.
*/ */
CV_EXPORTS_W Mat getStructuringElement(int shape, Size ksize, Point anchor = Point(-1,-1)); CV_EXPORTS_W Mat getStructuringElement(int shape, Size ksize, Point anchor = Point(-1,-1));
/** @example Smoothing.cpp /** @example samples/cpp/tutorial_code/ImgProc/Smoothing/Smoothing.cpp
Sample code for simple filters Sample code for simple filters
![Sample screenshot](Smoothing_Tutorial_Result_Median_Filter.jpg) ![Sample screenshot](Smoothing_Tutorial_Result_Median_Filter.jpg)
Check @ref tutorial_gausian_median_blur_bilateral_filter "the corresponding tutorial" for more details Check @ref tutorial_gausian_median_blur_bilateral_filter "the corresponding tutorial" for more details
*/ */
/** @brief Blurs an image using the median filter. /** @brief Blurs an image using the median filter.
The function smoothes an image using the median filter with the \f$\texttt{ksize} \times The function smoothes an image using the median filter with the \f$\texttt{ksize} \times
@ -1556,11 +1557,12 @@ CV_EXPORTS_W void sepFilter2D( InputArray src, OutputArray dst, int ddepth,
Point anchor = Point(-1,-1), Point anchor = Point(-1,-1),
double delta = 0, int borderType = BORDER_DEFAULT ); double delta = 0, int borderType = BORDER_DEFAULT );
/** @example Sobel_Demo.cpp /** @example samples/cpp/tutorial_code/ImgTrans/Sobel_Demo.cpp
Sample code using Sobel and/or Scharr OpenCV functions to make a simple Edge Detector Sample code using Sobel and/or Scharr OpenCV functions to make a simple Edge Detector
![Sample screenshot](Sobel_Derivatives_Tutorial_Result.jpg) ![Sample screenshot](Sobel_Derivatives_Tutorial_Result.jpg)
Check @ref tutorial_sobel_derivatives "the corresponding tutorial" for more details Check @ref tutorial_sobel_derivatives "the corresponding tutorial" for more details
*/ */
/** @brief Calculates the first, second, third, or mixed image derivatives using an extended Sobel operator. /** @brief Calculates the first, second, third, or mixed image derivatives using an extended Sobel operator.
In all cases except one, the \f$\texttt{ksize} \times \texttt{ksize}\f$ separable kernel is used to In all cases except one, the \f$\texttt{ksize} \times \texttt{ksize}\f$ separable kernel is used to
@ -1656,7 +1658,7 @@ CV_EXPORTS_W void Scharr( InputArray src, OutputArray dst, int ddepth,
int dx, int dy, double scale = 1, double delta = 0, int dx, int dy, double scale = 1, double delta = 0,
int borderType = BORDER_DEFAULT ); int borderType = BORDER_DEFAULT );
/** @example laplace.cpp /** @example samples/cpp/laplace.cpp
An example using Laplace transformations for edge detection An example using Laplace transformations for edge detection
*/ */
@ -1692,7 +1694,7 @@ CV_EXPORTS_W void Laplacian( InputArray src, OutputArray dst, int ddepth,
//! @addtogroup imgproc_feature //! @addtogroup imgproc_feature
//! @{ //! @{
/** @example edge.cpp /** @example samples/cpp/edge.cpp
This program demonstrates usage of the Canny edge detector This program demonstrates usage of the Canny edge detector
Check @ref tutorial_canny_detector "the corresponding tutorial" for more details Check @ref tutorial_canny_detector "the corresponding tutorial" for more details
@ -1932,7 +1934,7 @@ CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, OutputArray corners,
InputArray mask, int blockSize, InputArray mask, int blockSize,
int gradientSize, bool useHarrisDetector = false, int gradientSize, bool useHarrisDetector = false,
double k = 0.04 ); double k = 0.04 );
/** @example houghlines.cpp /** @example samples/cpp/tutorial_code/ImgTrans/houghlines.cpp
An example using the Hough line detector An example using the Hough line detector
![Sample input image](Hough_Lines_Tutorial_Original_Image.jpg) ![Output image](Hough_Lines_Tutorial_Result.jpg) ![Sample input image](Hough_Lines_Tutorial_Original_Image.jpg) ![Output image](Hough_Lines_Tutorial_Result.jpg)
*/ */
@ -2021,7 +2023,7 @@ CV_EXPORTS_W void HoughLinesPointSet( InputArray _point, OutputArray _lines, int
double min_rho, double max_rho, double rho_step, double min_rho, double max_rho, double rho_step,
double min_theta, double max_theta, double theta_step ); double min_theta, double max_theta, double theta_step );
/** @example houghcircles.cpp /** @example samples/cpp/tutorial_code/ImgTrans/houghcircles.cpp
An example using the Hough circle detector An example using the Hough circle detector
*/ */
@ -2069,7 +2071,7 @@ CV_EXPORTS_W void HoughCircles( InputArray image, OutputArray circles,
//! @addtogroup imgproc_filter //! @addtogroup imgproc_filter
//! @{ //! @{
/** @example morphology2.cpp /** @example samples/cpp/tutorial_code/ImgProc/Morphology_2.cpp
Advanced morphology Transformations sample code Advanced morphology Transformations sample code
![Sample screenshot](Morphology_2_Tutorial_Result.jpg) ![Sample screenshot](Morphology_2_Tutorial_Result.jpg)
Check @ref tutorial_opening_closing_hats "the corresponding tutorial" for more details Check @ref tutorial_opening_closing_hats "the corresponding tutorial" for more details
@ -2102,11 +2104,12 @@ CV_EXPORTS_W void erode( InputArray src, OutputArray dst, InputArray kernel,
int borderType = BORDER_CONSTANT, int borderType = BORDER_CONSTANT,
const Scalar& borderValue = morphologyDefaultBorderValue() ); const Scalar& borderValue = morphologyDefaultBorderValue() );
/** @example Morphology_1.cpp /** @example samples/cpp/tutorial_code/ImgProc/Morphology_1.cpp
Erosion and Dilation sample code Erosion and Dilation sample code
![Sample Screenshot-Erosion](Morphology_1_Tutorial_Erosion_Result.jpg)![Sample Screenshot-Dilation](Morphology_1_Tutorial_Dilation_Result.jpg) ![Sample Screenshot-Erosion](Morphology_1_Tutorial_Erosion_Result.jpg)![Sample Screenshot-Dilation](Morphology_1_Tutorial_Dilation_Result.jpg)
Check @ref tutorial_erosion_dilatation "the corresponding tutorial" for more details Check @ref tutorial_erosion_dilatation "the corresponding tutorial" for more details
*/ */
/** @brief Dilates an image by using a specific structuring element. /** @brief Dilates an image by using a specific structuring element.
The function dilates the source image using the specified structuring element that determines the The function dilates the source image using the specified structuring element that determines the
@ -2236,9 +2239,10 @@ CV_EXPORTS_W void warpAffine( InputArray src, OutputArray dst,
int borderMode = BORDER_CONSTANT, int borderMode = BORDER_CONSTANT,
const Scalar& borderValue = Scalar()); const Scalar& borderValue = Scalar());
/** @example warpPerspective_demo.cpp /** @example samples/cpp/warpPerspective_demo.cpp
An example program shows using cv::findHomography and cv::warpPerspective for image warping An example program shows using cv::findHomography and cv::warpPerspective for image warping
*/ */
/** @brief Applies a perspective transformation to an image. /** @brief Applies a perspective transformation to an image.
The function warpPerspective transforms the source image using the specified matrix: The function warpPerspective transforms the source image using the specified matrix:
@ -2434,7 +2438,7 @@ source image. The center must be inside the image.
CV_EXPORTS_W void getRectSubPix( InputArray image, Size patchSize, CV_EXPORTS_W void getRectSubPix( InputArray image, Size patchSize,
Point2f center, OutputArray patch, int patchType = -1 ); Point2f center, OutputArray patch, int patchType = -1 );
/** @example polar_transforms.cpp /** @example samples/cpp/polar_transforms.cpp
An example using the cv::linearPolar and cv::logPolar operations An example using the cv::linearPolar and cv::logPolar operations
*/ */
@ -2869,9 +2873,10 @@ CV_EXPORTS_W void adaptiveThreshold( InputArray src, OutputArray dst,
//! @addtogroup imgproc_filter //! @addtogroup imgproc_filter
//! @{ //! @{
/** @example Pyramids.cpp /** @example samples/cpp/tutorial_code/ImgProc/Pyramids/Pyramids.cpp
An example using pyrDown and pyrUp functions An example using pyrDown and pyrUp functions
*/ */
/** @brief Blurs an image and downsamples it. /** @brief Blurs an image and downsamples it.
By default, size of the output image is computed as `Size((src.cols+1)/2, (src.rows+1)/2)`, but in By default, size of the output image is computed as `Size((src.cols+1)/2, (src.rows+1)/2)`, but in
@ -3120,7 +3125,7 @@ CV_EXPORTS_AS(undistortPointsIter) void undistortPoints( InputArray src, OutputA
//! @addtogroup imgproc_hist //! @addtogroup imgproc_hist
//! @{ //! @{
/** @example demhist.cpp /** @example samples/cpp/demhist.cpp
An example for creating histograms of an image An example for creating histograms of an image
*/ */
@ -3317,7 +3322,7 @@ CV_EXPORTS_AS(EMD) float wrapperEMD( InputArray signature1, InputArray signature
//! @} imgproc_hist //! @} imgproc_hist
/** @example watershed.cpp /** @example samples/cpp/watershed.cpp
An example using the watershed algorithm An example using the watershed algorithm
*/ */
@ -3397,7 +3402,7 @@ CV_EXPORTS_W void pyrMeanShiftFiltering( InputArray src, OutputArray dst,
//! @addtogroup imgproc_misc //! @addtogroup imgproc_misc
//! @{ //! @{
/** @example grabcut.cpp /** @example samples/cpp/grabcut.cpp
An example using the GrabCut algorithm An example using the GrabCut algorithm
![Sample Screenshot](grabcut_output1.jpg) ![Sample Screenshot](grabcut_output1.jpg)
*/ */
@ -3424,11 +3429,10 @@ CV_EXPORTS_W void grabCut( InputArray img, InputOutputArray mask, Rect rect,
InputOutputArray bgdModel, InputOutputArray fgdModel, InputOutputArray bgdModel, InputOutputArray fgdModel,
int iterCount, int mode = GC_EVAL ); int iterCount, int mode = GC_EVAL );
/** @example distrans.cpp /** @example samples/cpp/distrans.cpp
An example on using the distance transform\ An example on using the distance transform
*/ */
/** @brief Calculates the distance to the closest zero pixel for each pixel of the source image. /** @brief Calculates the distance to the closest zero pixel for each pixel of the source image.
The function cv::distanceTransform calculates the approximate or precise distance from every binary The function cv::distanceTransform calculates the approximate or precise distance from every binary
@ -3500,7 +3504,7 @@ the first variant of the function and distanceType == #DIST_L1.
CV_EXPORTS_W void distanceTransform( InputArray src, OutputArray dst, CV_EXPORTS_W void distanceTransform( InputArray src, OutputArray dst,
int distanceType, int maskSize, int dstType=CV_32F); int distanceType, int maskSize, int dstType=CV_32F);
/** @example ffilldemo.cpp /** @example samples/cpp/ffilldemo.cpp
An example using the FloodFill technique An example using the FloodFill technique
*/ */
@ -3701,9 +3705,10 @@ enum TemplateMatchModes {
TM_CCOEFF_NORMED = 5 //!< \f[R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{ \sqrt{\sum_{x',y'}T'(x',y')^2 \cdot \sum_{x',y'} I'(x+x',y+y')^2} }\f] TM_CCOEFF_NORMED = 5 //!< \f[R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{ \sqrt{\sum_{x',y'}T'(x',y')^2 \cdot \sum_{x',y'} I'(x+x',y+y')^2} }\f]
}; };
/** @example MatchTemplate_Demo.cpp /** @example samples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp
An example using Template Matching algorithm An example using Template Matching algorithm
*/ */
/** @brief Compares a template against overlapped image regions. /** @brief Compares a template against overlapped image regions.
The function slides through image , compares the overlapped patches of size \f$w \times h\f$ against The function slides through image , compares the overlapped patches of size \f$w \times h\f$ against
@ -3735,6 +3740,10 @@ CV_EXPORTS_W void matchTemplate( InputArray image, InputArray templ,
//! @addtogroup imgproc_shape //! @addtogroup imgproc_shape
//! @{ //! @{
/** @example samples/cpp/connected_components.cpp
This program demonstrates connected components and use of the trackbar
*/
/** @brief computes the connected components labeled image of boolean image /** @brief computes the connected components labeled image of boolean image
image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0
@ -3842,6 +3851,16 @@ CV_EXPORTS_W void findContours( InputOutputArray image, OutputArrayOfArrays cont
CV_EXPORTS void findContours( InputOutputArray image, OutputArrayOfArrays contours, CV_EXPORTS void findContours( InputOutputArray image, OutputArrayOfArrays contours,
int mode, int method, Point offset = Point()); int mode, int method, Point offset = Point());
/** @example samples/cpp/squares.cpp
A program using pyramid scaling, Canny, contours and contour simplification to find
squares in a list of images (pic1-6.png). Returns sequence of squares detected on the image.
*/
/** @example samples/tapi/squares.cpp
A program using pyramid scaling, Canny, contours and contour simplification to find
squares in the input image.
*/
/** @brief Approximates a polygonal curve(s) with the specified precision. /** @brief Approximates a polygonal curve(s) with the specified precision.
The function cv::approxPolyDP approximates a curve or a polygon with another curve/polygon with less The function cv::approxPolyDP approximates a curve or a polygon with another curve/polygon with less
@ -3940,7 +3959,7 @@ The function finds the minimal enclosing circle of a 2D point set using an itera
CV_EXPORTS_W void minEnclosingCircle( InputArray points, CV_EXPORTS_W void minEnclosingCircle( InputArray points,
CV_OUT Point2f& center, CV_OUT float& radius ); CV_OUT Point2f& center, CV_OUT float& radius );
/** @example minarea.cpp /** @example samples/cpp/minarea.cpp
*/ */
/** @brief Finds a triangle of minimum area enclosing a 2D point set and returns its area. /** @brief Finds a triangle of minimum area enclosing a 2D point set and returns its area.
@ -3976,7 +3995,7 @@ The function compares two shapes. All three implemented methods use the Hu invar
CV_EXPORTS_W double matchShapes( InputArray contour1, InputArray contour2, CV_EXPORTS_W double matchShapes( InputArray contour1, InputArray contour2,
int method, double parameter ); int method, double parameter );
/** @example convexhull.cpp /** @example samples/cpp/convexhull.cpp
An example using the convexHull functionality An example using the convexHull functionality
*/ */
@ -4036,7 +4055,7 @@ CV_EXPORTS_W bool isContourConvex( InputArray contour );
CV_EXPORTS_W float intersectConvexConvex( InputArray _p1, InputArray _p2, CV_EXPORTS_W float intersectConvexConvex( InputArray _p1, InputArray _p2,
OutputArray _p12, bool handleNested = true ); OutputArray _p12, bool handleNested = true );
/** @example fitellipse.cpp /** @example samples/cpp/fitellipse.cpp
An example using the fitEllipse technique An example using the fitEllipse technique
*/ */
@ -4253,9 +4272,10 @@ enum ColormapTypes
COLORMAP_PARULA = 12 //!< ![parula](pics/colormaps/colorscale_parula.jpg) COLORMAP_PARULA = 12 //!< ![parula](pics/colormaps/colorscale_parula.jpg)
}; };
/** @example falsecolor.cpp /** @example samples/cpp/falsecolor.cpp
An example using applyColorMap function An example using applyColorMap function
*/ */
/** @brief Applies a GNU Octave/MATLAB equivalent colormap on a given image. /** @brief Applies a GNU Octave/MATLAB equivalent colormap on a given image.
@param src The source image, grayscale or colored of type CV_8UC1 or CV_8UC3. @param src The source image, grayscale or colored of type CV_8UC1 or CV_8UC3.
@ -4342,9 +4362,10 @@ CV_EXPORTS void rectangle(CV_IN_OUT Mat& img, Rect rec,
const Scalar& color, int thickness = 1, const Scalar& color, int thickness = 1,
int lineType = LINE_8, int shift = 0); int lineType = LINE_8, int shift = 0);
/** @example Drawing_2.cpp /** @example samples/cpp/tutorial_code/ImgProc/basic_drawing/Drawing_2.cpp
An example using drawing functions An example using drawing functions
*/ */
/** @brief Draws a circle. /** @brief Draws a circle.
The function cv::circle draws a simple or filled circle with a given center and radius. The function cv::circle draws a simple or filled circle with a given center and radius.
@ -4468,9 +4489,11 @@ CV_EXPORTS void fillPoly(Mat& img, const Point** pts,
const Scalar& color, int lineType = LINE_8, int shift = 0, const Scalar& color, int lineType = LINE_8, int shift = 0,
Point offset = Point() ); Point offset = Point() );
/** @example Drawing_1.cpp /** @example samples/cpp/tutorial_code/ImgProc/basic_drawing/Drawing_1.cpp
An example using drawing functions An example using drawing functions
Check @ref tutorial_random_generator_and_text "the corresponding tutorial" for more details
*/ */
/** @brief Fills the area bounded by one or more polygons. /** @brief Fills the area bounded by one or more polygons.
The function cv::fillPoly fills an area bounded by several polygonal contours. The function can fill The function cv::fillPoly fills an area bounded by several polygonal contours. The function can fill
@ -4510,12 +4533,12 @@ CV_EXPORTS_W void polylines(InputOutputArray img, InputArrayOfArrays pts,
bool isClosed, const Scalar& color, bool isClosed, const Scalar& color,
int thickness = 1, int lineType = LINE_8, int shift = 0 ); int thickness = 1, int lineType = LINE_8, int shift = 0 );
/** @example contours2.cpp /** @example samples/cpp/contours2.cpp
An example program illustrates the use of cv::findContours and cv::drawContours An example program illustrates the use of cv::findContours and cv::drawContours
\image html WindowsQtContoursOutput.png "Screenshot of the program" \image html WindowsQtContoursOutput.png "Screenshot of the program"
*/ */
/** @example segment_objects.cpp /** @example samples/cpp/segment_objects.cpp
An example using drawContours to clean up a background segmentation result An example using drawContours to clean up a background segmentation result
*/ */

View File

@ -215,7 +215,7 @@ public:
virtual Ptr<MaskGenerator> getMaskGenerator() = 0; virtual Ptr<MaskGenerator> getMaskGenerator() = 0;
}; };
/** @example facedetect.cpp /** @example samples/cpp/facedetect.cpp
This program demonstrates usage of the Cascade classifier class This program demonstrates usage of the Cascade classifier class
\image html Cascade_Classifier_Tutorial_Result_Haar.jpg "Sample screenshot" width=321 height=254 \image html Cascade_Classifier_Tutorial_Result_Haar.jpg "Sample screenshot" width=321 height=254
*/ */
@ -443,7 +443,7 @@ public:
*/ */
CV_WRAP double getWinSigma() const; CV_WRAP double getWinSigma() const;
/**@example peopledetect.cpp /**@example samples/cpp/peopledetect.cpp
*/ */
/**@brief Sets coefficients for the linear SVM classifier. /**@brief Sets coefficients for the linear SVM classifier.
@param _svmdetector coefficients for the linear SVM classifier. @param _svmdetector coefficients for the linear SVM classifier.
@ -478,7 +478,7 @@ public:
*/ */
virtual void copyTo(HOGDescriptor& c) const; virtual void copyTo(HOGDescriptor& c) const;
/**@example train_HOG.cpp /**@example samples/cpp/train_HOG.cpp
*/ */
/** @brief Computes HOG descriptors of given image. /** @brief Computes HOG descriptors of given image.
@param img Matrix of the type CV_8U containing an image where HOG features will be calculated. @param img Matrix of the type CV_8U containing an image where HOG features will be calculated.
@ -575,7 +575,7 @@ public:
*/ */
CV_WRAP static std::vector<float> getDefaultPeopleDetector(); CV_WRAP static std::vector<float> getDefaultPeopleDetector();
/**@example hog.cpp /**@example samples/tapi/hog.cpp
*/ */
/** @brief Returns coefficients of the classifier trained for people detection (for 48x96 windows). /** @brief Returns coefficients of the classifier trained for people detection (for 48x96 windows).
*/ */

View File

@ -730,7 +730,7 @@ CV_EXPORTS_W void decolor( InputArray src, OutputArray grayscale, OutputArray co
//! @addtogroup photo_clone //! @addtogroup photo_clone
//! @{ //! @{
/** @example cloning_demo.cpp /** @example samples/cpp/tutorial_code/photo/seamless_cloning/cloning_demo.cpp
An example using seamlessClone function An example using seamlessClone function
*/ */
/** @brief Image editing tasks concern either global changes (color/intensity corrections, filters, /** @brief Image editing tasks concern either global changes (color/intensity corrections, filters,
@ -836,7 +836,7 @@ CV_EXPORTS_W void edgePreservingFilter(InputArray src, OutputArray dst, int flag
CV_EXPORTS_W void detailEnhance(InputArray src, OutputArray dst, float sigma_s = 10, CV_EXPORTS_W void detailEnhance(InputArray src, OutputArray dst, float sigma_s = 10,
float sigma_r = 0.15f); float sigma_r = 0.15f);
/** @example npr_demo.cpp /** @example samples/cpp/tutorial_code/photo/non_photorealistic_rendering/npr_demo.cpp
An example using non-photorealistic line drawing functions An example using non-photorealistic line drawing functions
*/ */
/** @brief Pencil-like non-photorealistic line drawing /** @brief Pencil-like non-photorealistic line drawing

View File

@ -53,7 +53,7 @@ namespace cv
//! @addtogroup shape //! @addtogroup shape
//! @{ //! @{
/** @example shape_example.cpp /** @example samples/cpp/shape_example.cpp
An example using shape distance algorithm An example using shape distance algorithm
*/ */
/** @brief Abstract base class for shape distance algorithms. /** @brief Abstract base class for shape distance algorithms.

View File

@ -109,6 +109,14 @@ namespace cv {
//! @addtogroup stitching //! @addtogroup stitching
//! @{ //! @{
/** @example samples/cpp/stitching.cpp
A basic example on image stitching
*/
/** @example samples/cpp/stitching_detailed.cpp
A detailed example on image stitching
*/
/** @brief High level image stitcher. /** @brief High level image stitcher.
It's possible to use this class without being aware of the entire stitching pipeline. However, to It's possible to use this class without being aware of the entire stitching pipeline. However, to

View File

@ -78,9 +78,10 @@ See the OpenCV sample camshiftdemo.c that tracks colored objects.
*/ */
CV_EXPORTS_W RotatedRect CamShift( InputArray probImage, CV_IN_OUT Rect& window, CV_EXPORTS_W RotatedRect CamShift( InputArray probImage, CV_IN_OUT Rect& window,
TermCriteria criteria ); TermCriteria criteria );
/** @example camshiftdemo.cpp /** @example samples/cpp/camshiftdemo.cpp
An example using the mean-shift tracking algorithm An example using the mean-shift tracking algorithm
*/ */
/** @brief Finds an object on a back projection image. /** @brief Finds an object on a back projection image.
@param probImage Back projection of the object histogram. See calcBackProject for details. @param probImage Back projection of the object histogram. See calcBackProject for details.
@ -123,9 +124,10 @@ CV_EXPORTS_W int buildOpticalFlowPyramid( InputArray img, OutputArrayOfArrays py
int derivBorder = BORDER_CONSTANT, int derivBorder = BORDER_CONSTANT,
bool tryReuseInputImage = true ); bool tryReuseInputImage = true );
/** @example lkdemo.cpp /** @example samples/cpp/lkdemo.cpp
An example using the Lucas-Kanade optical flow algorithm An example using the Lucas-Kanade optical flow algorithm
*/ */
/** @brief Calculates an optical flow for a sparse feature set using the iterative Lucas-Kanade method with /** @brief Calculates an optical flow for a sparse feature set using the iterative Lucas-Kanade method with
pyramids. pyramids.
@ -263,7 +265,7 @@ enum
MOTION_HOMOGRAPHY = 3 MOTION_HOMOGRAPHY = 3
}; };
/** @example image_alignment.cpp /** @example samples/cpp/image_alignment.cpp
An example using the image alignment ECC algorithm An example using the image alignment ECC algorithm
*/ */
@ -322,9 +324,10 @@ CV_EXPORTS_W double findTransformECC( InputArray templateImage, InputArray input
TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 50, 0.001), TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 50, 0.001),
InputArray inputMask = noArray()); InputArray inputMask = noArray());
/** @example kalman.cpp /** @example samples/cpp/kalman.cpp
An example using the standard Kalman filter An example using the standard Kalman filter
*/ */
/** @brief Kalman filter class. /** @brief Kalman filter class.
The class implements a standard Kalman filter <http://en.wikipedia.org/wiki/Kalman_filter>, The class implements a standard Kalman filter <http://en.wikipedia.org/wiki/Kalman_filter>,

View File

@ -815,9 +815,14 @@ protected:
class IVideoWriter; class IVideoWriter;
/** @example videowriter_basic.cpp /** @example samples/cpp/tutorial_code/videoio/video-write/video-write.cpp
Check @ref tutorial_video_write "the corresponding tutorial" for more details
*/
/** @example samples/cpp/videowriter_basic.cpp
An example using VideoCapture and VideoWriter class An example using VideoCapture and VideoWriter class
*/ */
/** @brief Video writer class. /** @brief Video writer class.
The class provides C++ API for writing video files or image sequences. The class provides C++ API for writing video files or image sequences.

View File

@ -1,3 +1,4 @@
#include <opencv2/core/utility.hpp> #include <opencv2/core/utility.hpp>
#include "opencv2/imgproc.hpp" #include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp" #include "opencv2/imgcodecs.hpp"
@ -32,44 +33,29 @@ static void on_trackbar(int, void*)
imshow( "Connected Components", dst ); imshow( "Connected Components", dst );
} }
static void help()
{
cout << "\n This program demonstrates connected components and use of the trackbar\n"
"Usage: \n"
" ./connected_components <image(../data/stuff.jpg as default)>\n"
"The image is converted to grayscale and displayed, another image has a trackbar\n"
"that controls thresholding and thereby the extracted contours which are drawn in color\n";
}
const char* keys =
{
"{help h||}{@image|../data/stuff.jpg|image for converting to a grayscale}"
};
int main( int argc, const char** argv ) int main( int argc, const char** argv )
{ {
CommandLineParser parser(argc, argv, keys); CommandLineParser parser(argc, argv, "{@image|../data/stuff.jpg|image for converting to a grayscale}");
if (parser.has("help")) parser.about("\nThis program demonstrates connected components and use of the trackbar\n");
{ parser.printMessage();
help(); cout << "\nThe image is converted to grayscale and displayed, another image has a trackbar\n"
return 0; "that controls thresholding and thereby the extracted contours which are drawn in color\n";
}
string inputImage = parser.get<string>(0); String inputImage = parser.get<string>(0);
img = imread(inputImage.c_str(), 0); img = imread(inputImage, IMREAD_GRAYSCALE);
if(img.empty()) if(img.empty())
{ {
cout << "Could not read input image file: " << inputImage << endl; cout << "Could not read input image file: " << inputImage << endl;
return -1; return EXIT_FAILURE;
} }
namedWindow( "Image", 1 );
imshow( "Image", img ); imshow( "Image", img );
namedWindow( "Connected Components", 1 ); namedWindow( "Connected Components", WINDOW_AUTOSIZE);
createTrackbar( "Threshold", "Connected Components", &threshval, 255, on_trackbar ); createTrackbar( "Threshold", "Connected Components", &threshval, 255, on_trackbar );
on_trackbar(threshval, 0); on_trackbar(threshval, 0);
waitKey(0); waitKey(0);
return 0; return EXIT_SUCCESS;
} }

View File

@ -1,3 +1,4 @@
// The "Square Detector" program. // The "Square Detector" program.
// It loads several images sequentially and tries to find squares in // It loads several images sequentially and tries to find squares in
// each image // each image
@ -8,22 +9,18 @@
#include "opencv2/highgui.hpp" #include "opencv2/highgui.hpp"
#include <iostream> #include <iostream>
#include <math.h>
#include <string.h>
using namespace cv; using namespace cv;
using namespace std; using namespace std;
static void help() static void help(const char* programName)
{ {
cout << cout <<
"\nA program using pyramid scaling, Canny, contours, contour simpification and\n" "\nA program using pyramid scaling, Canny, contours and contour simplification\n"
"memory storage (it's got it all folks) to find\n" "to find squares in a list of images (pic1-6.png)\n"
"squares in a list of images pic1-6.png\n"
"Returns sequence of squares detected on the image.\n" "Returns sequence of squares detected on the image.\n"
"the sequence is stored in the specified memory storage\n"
"Call:\n" "Call:\n"
"./squares [file_name (optional)]\n" "./" << programName << " [file_name (optional)]\n"
"Using OpenCV version " << CV_VERSION << "\n" << endl; "Using OpenCV version " << CV_VERSION << "\n" << endl;
} }
@ -44,7 +41,6 @@ static double angle( Point pt1, Point pt2, Point pt0 )
} }
// returns sequence of squares detected on the image. // returns sequence of squares detected on the image.
// the sequence is stored in the specified memory storage
static void findSquares( const Mat& image, vector<vector<Point> >& squares ) static void findSquares( const Mat& image, vector<vector<Point> >& squares )
{ {
squares.clear(); squares.clear();
@ -93,7 +89,7 @@ static void findSquares( const Mat& image, vector<vector<Point> >& squares )
{ {
// approximate contour with accuracy proportional // approximate contour with accuracy proportional
// to the contour perimeter // to the contour perimeter
approxPolyDP(Mat(contours[i]), approx, arcLength(Mat(contours[i]), true)*0.02, true); approxPolyDP(contours[i], approx, arcLength(contours[i], true)*0.02, true);
// square contours should have 4 vertices after approximation // square contours should have 4 vertices after approximation
// relatively large area (to filter out noisy contours) // relatively large area (to filter out noisy contours)
@ -102,8 +98,8 @@ static void findSquares( const Mat& image, vector<vector<Point> >& squares )
// area may be positive or negative - in accordance with the // area may be positive or negative - in accordance with the
// contour orientation // contour orientation
if( approx.size() == 4 && if( approx.size() == 4 &&
fabs(contourArea(Mat(approx))) > 1000 && fabs(contourArea(approx)) > 1000 &&
isContourConvex(Mat(approx)) ) isContourConvex(approx) )
{ {
double maxCosine = 0; double maxCosine = 0;
@ -144,7 +140,7 @@ int main(int argc, char** argv)
{ {
static const char* names[] = { "../data/pic1.png", "../data/pic2.png", "../data/pic3.png", static const char* names[] = { "../data/pic1.png", "../data/pic2.png", "../data/pic3.png",
"../data/pic4.png", "../data/pic5.png", "../data/pic6.png", 0 }; "../data/pic4.png", "../data/pic5.png", "../data/pic6.png", 0 };
help(); help(argv[0]);
if( argc > 1) if( argc > 1)
{ {
@ -152,12 +148,11 @@ int main(int argc, char** argv)
names[1] = "0"; names[1] = "0";
} }
namedWindow( wndname, 1 );
vector<vector<Point> > squares; vector<vector<Point> > squares;
for( int i = 0; names[i] != 0; i++ ) for( int i = 0; names[i] != 0; i++ )
{ {
Mat image = imread(names[i], 1); Mat image = imread(names[i], IMREAD_COLOR);
if( image.empty() ) if( image.empty() )
{ {
cout << "Couldn't load " << names[i] << endl; cout << "Couldn't load " << names[i] << endl;
@ -167,7 +162,7 @@ int main(int argc, char** argv)
findSquares(image, squares); findSquares(image, squares);
drawSquares(image, squares); drawSquares(image, squares);
char c = (char)waitKey(); int c = waitKey();
if( c == 27 ) if( c == 27 )
break; break;
} }

View File

@ -20,8 +20,9 @@ int parseCmdArgs(int argc, char** argv);
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
int retval = parseCmdArgs(argc, argv); int retval = parseCmdArgs(argc, argv);
if (retval) return -1; if (retval) return EXIT_FAILURE;
//![stitching]
Mat pano; Mat pano;
Ptr<Stitcher> stitcher = Stitcher::create(mode, try_use_gpu); Ptr<Stitcher> stitcher = Stitcher::create(mode, try_use_gpu);
Stitcher::Status status = stitcher->stitch(imgs, pano); Stitcher::Status status = stitcher->stitch(imgs, pano);
@ -29,12 +30,13 @@ int main(int argc, char* argv[])
if (status != Stitcher::OK) if (status != Stitcher::OK)
{ {
cout << "Can't stitch images, error code = " << int(status) << endl; cout << "Can't stitch images, error code = " << int(status) << endl;
return -1; return EXIT_FAILURE;
} }
//![stitching]
imwrite(result_name, pano); imwrite(result_name, pano);
cout << "stitching completed successfully\n" << result_name << " saved!"; cout << "stitching completed successfully\n" << result_name << " saved!";
return 0; return EXIT_SUCCESS;
} }
@ -63,7 +65,7 @@ int parseCmdArgs(int argc, char** argv)
if (argc == 1) if (argc == 1)
{ {
printUsage(argv); printUsage(argv);
return -1; return EXIT_FAILURE;
} }
for (int i = 1; i < argc; ++i) for (int i = 1; i < argc; ++i)
@ -71,7 +73,7 @@ int parseCmdArgs(int argc, char** argv)
if (string(argv[i]) == "--help" || string(argv[i]) == "/?") if (string(argv[i]) == "--help" || string(argv[i]) == "/?")
{ {
printUsage(argv); printUsage(argv);
return -1; return EXIT_FAILURE;
} }
else if (string(argv[i]) == "--try_use_gpu") else if (string(argv[i]) == "--try_use_gpu")
{ {
@ -82,7 +84,7 @@ int parseCmdArgs(int argc, char** argv)
else else
{ {
cout << "Bad --try_use_gpu flag value\n"; cout << "Bad --try_use_gpu flag value\n";
return -1; return EXIT_FAILURE;
} }
i++; i++;
} }
@ -104,7 +106,7 @@ int parseCmdArgs(int argc, char** argv)
else else
{ {
cout << "Bad --mode flag value\n"; cout << "Bad --mode flag value\n";
return -1; return EXIT_FAILURE;
} }
i++; i++;
} }
@ -114,7 +116,7 @@ int parseCmdArgs(int argc, char** argv)
if (img.empty()) if (img.empty())
{ {
cout << "Can't read image '" << argv[i] << "'\n"; cout << "Can't read image '" << argv[i] << "'\n";
return -1; return EXIT_FAILURE;
} }
if (divide_images) if (divide_images)
@ -130,5 +132,5 @@ int parseCmdArgs(int argc, char** argv)
imgs.push_back(img); imgs.push_back(img);
} }
} }
return 0; return EXIT_SUCCESS;
} }

View File

@ -1,45 +1,3 @@
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//
//M*/
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>

View File

@ -33,7 +33,7 @@ void Morphology_Operations( int, void* );
int main( int argc, char** argv ) int main( int argc, char** argv )
{ {
//![load] //![load]
CommandLineParser parser( argc, argv, "{@input | ../data/LinuxLogo.jpg | input image}" ); CommandLineParser parser( argc, argv, "{@input | ../data/baboon.jpg | input image}" );
src = imread( parser.get<String>( "@input" ), IMREAD_COLOR ); src = imread( parser.get<String>( "@input" ), IMREAD_COLOR );
if (src.empty()) if (src.empty())
{ {

View File

@ -1,6 +1,3 @@
// The "Square Detector" program.
// It loads several images sequentially and tries to find squares in
// each image
#include "opencv2/core.hpp" #include "opencv2/core.hpp"
#include "opencv2/core/ocl.hpp" #include "opencv2/core/ocl.hpp"
@ -9,7 +6,6 @@
#include "opencv2/imgcodecs.hpp" #include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp" #include "opencv2/highgui.hpp"
#include <iostream> #include <iostream>
#include <string.h>
using namespace cv; using namespace cv;
using namespace std; using namespace std;
@ -31,7 +27,6 @@ static double angle( Point pt1, Point pt2, Point pt0 )
// returns sequence of squares detected on the image. // returns sequence of squares detected on the image.
// the sequence is stored in the specified memory storage
static void findSquares( const UMat& image, vector<vector<Point> >& squares ) static void findSquares( const UMat& image, vector<vector<Point> >& squares )
{ {
squares.clear(); squares.clear();
@ -66,7 +61,7 @@ static void findSquares( const UMat& image, vector<vector<Point> >& squares )
{ {
// apply threshold if l!=0: // apply threshold if l!=0:
// tgray(x,y) = gray(x,y) < (l+1)*255/N ? 255 : 0 // tgray(x,y) = gray(x,y) < (l+1)*255/N ? 255 : 0
cv::threshold(gray0, gray, (l+1)*255/N, 255, THRESH_BINARY); threshold(gray0, gray, (l+1)*255/N, 255, THRESH_BINARY);
} }
// find contours and store them all as a list // find contours and store them all as a list
@ -80,7 +75,7 @@ static void findSquares( const UMat& image, vector<vector<Point> >& squares )
// approximate contour with accuracy proportional // approximate contour with accuracy proportional
// to the contour perimeter // to the contour perimeter
approxPolyDP(Mat(contours[i]), approx, arcLength(Mat(contours[i]), true)*0.02, true); approxPolyDP(contours[i], approx, arcLength(contours[i], true)*0.02, true);
// square contours should have 4 vertices after approximation // square contours should have 4 vertices after approximation
// relatively large area (to filter out noisy contours) // relatively large area (to filter out noisy contours)
@ -89,8 +84,8 @@ static void findSquares( const UMat& image, vector<vector<Point> >& squares )
// area may be positive or negative - in accordance with the // area may be positive or negative - in accordance with the
// contour orientation // contour orientation
if( approx.size() == 4 && if( approx.size() == 4 &&
fabs(contourArea(Mat(approx))) > 1000 && fabs(contourArea(approx)) > 1000 &&
isContourConvex(Mat(approx)) ) isContourConvex(approx) )
{ {
double maxCosine = 0; double maxCosine = 0;
@ -150,7 +145,7 @@ int main(int argc, char** argv)
if(cmd.has("help")) if(cmd.has("help"))
{ {
cout << "Usage : squares [options]" << endl; cout << "Usage : " << argv[0] << " [options]" << endl;
cout << "Available options:" << endl; cout << "Available options:" << endl;
cmd.printMessage(); cmd.printMessage();
return EXIT_SUCCESS; return EXIT_SUCCESS;
@ -158,7 +153,7 @@ int main(int argc, char** argv)
if (cmd.has("cpu_mode")) if (cmd.has("cpu_mode"))
{ {
ocl::setUseOpenCL(false); ocl::setUseOpenCL(false);
std::cout << "OpenCL was disabled" << std::endl; cout << "OpenCL was disabled" << endl;
} }
string inputName = cmd.get<string>("i"); string inputName = cmd.get<string>("i");
@ -185,11 +180,11 @@ int main(int argc, char** argv)
do do
{ {
int64 t_start = cv::getTickCount(); int64 t_start = getTickCount();
findSquares(image, squares); findSquares(image, squares);
t_cpp += cv::getTickCount() - t_start; t_cpp += cv::getTickCount() - t_start;
t_start = cv::getTickCount(); t_start = getTickCount();
cout << "run loop: " << j << endl; cout << "run loop: " << j << endl;
} }