From 8a6fabed83b3bf7eea5413a7de62f5e12c1afbe8 Mon Sep 17 00:00:00 2001 From: Steve Date: Thu, 29 Dec 2016 17:23:40 -0800 Subject: [PATCH 1/6] Avoid segmentation fault Change `<=` to `<` to avoid accessing the first character of an empty string --- modules/core/src/command_line_parser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/src/command_line_parser.cpp b/modules/core/src/command_line_parser.cpp index 542b231ff9..4fc62238b8 100644 --- a/modules/core/src/command_line_parser.cpp +++ b/modules/core/src/command_line_parser.cpp @@ -10,7 +10,7 @@ static const char* noneValue = ""; static String cat_string(const String& str) { int left = 0, right = (int)str.length(); - while( left <= right && str[left] == ' ' ) + while( left < right && str[left] == ' ' ) left++; while( right > left && str[right-1] == ' ' ) right--; From d1f727191fbe44e8d260e93204e8886e52e065f2 Mon Sep 17 00:00:00 2001 From: BadrinathS Date: Sat, 31 Dec 2016 16:37:51 +0530 Subject: [PATCH 2/6] Resolving issue #7924 --- modules/ml/src/lr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ml/src/lr.cpp b/modules/ml/src/lr.cpp index 99692f3d16..57fcac7ef0 100644 --- a/modules/ml/src/lr.cpp +++ b/modules/ml/src/lr.cpp @@ -311,7 +311,7 @@ Mat LogisticRegressionImpl::calc_sigmoid(const Mat& data) const double LogisticRegressionImpl::compute_cost(const Mat& _data, const Mat& _labels, const Mat& _init_theta) { - int llambda = 0; + float llambda = 0; /*changed llambda from int to float to solve issue #7924*/ int m; int n; double cost = 0; From c3a8db6d6c7ab1abd78d9c1b5ba3de16842a65d1 Mon Sep 17 00:00:00 2001 From: Matt Bennett Date: Mon, 2 Jan 2017 20:28:07 +0000 Subject: [PATCH 3/6] Merge pull request #7952 from mattmyne:JSONWriteFixTrailingDecimalPoint Append zero to trailing decimal place for FileStorage JSON write of a float or double value (#7952) * Fix for FileStorage JSON write of a float or double value that has no fractional part; appends a zero character after the trailing decimal place to meet JSON standard. * strlen return to size_t type rather than unnecessary cast to int --- modules/core/src/persistence.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/core/src/persistence.cpp b/modules/core/src/persistence.cpp index ccdb135ec5..bf16c2f398 100644 --- a/modules/core/src/persistence.cpp +++ b/modules/core/src/persistence.cpp @@ -4025,7 +4025,14 @@ static void icvJSONWriteReal( CvFileStorage* fs, const char* key, double value ) { char buf[128]; - icvJSONWrite( fs, key, icvDoubleToString( buf, value )); + size_t len = strlen( icvDoubleToString( buf, value ) ); + if( len > 0 && buf[len-1] == '.' ) + { + // append zero if string ends with decimal place to match JSON standard + buf[len] = '0'; + buf[len+1] = '\0'; + } + icvJSONWrite( fs, key, buf ); } @@ -4829,6 +4836,17 @@ cvWriteRawData( CvFileStorage* fs, const void* _data, int len, const char* dt ) } else { + if( elem_type == CV_32F || elem_type == CV_64F ) + { + size_t buf_len = strlen(ptr); + if( buf_len > 0 && ptr[buf_len-1] == '.' ) + { + // append zero if CV_32F or CV_64F string ends with decimal place to match JSON standard + // ptr will point to buf, so can write to buf given ptr is const + buf[buf_len] = '0'; + buf[buf_len+1] = '\0'; + } + } icvJSONWrite( fs, 0, ptr ); } } From a85b4b5805ab97a6afad5618f799fffeb5cfcf53 Mon Sep 17 00:00:00 2001 From: Bryce Evans Date: Mon, 2 Jan 2017 19:00:12 -0800 Subject: [PATCH 4/6] Merge pull request #7942 from bae43:fix-typos Fix Documentation Typos (#7942) --- .../windows_install/windows_install.markdown | 20 +++++++------- .../windows_visual_studio_Opencv.markdown | 27 ++++++++++--------- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/doc/tutorials/introduction/windows_install/windows_install.markdown b/doc/tutorials/introduction/windows_install/windows_install.markdown index 179f430e23..e4e969f432 100644 --- a/doc/tutorials/introduction/windows_install/windows_install.markdown +++ b/doc/tutorials/introduction/windows_install/windows_install.markdown @@ -67,14 +67,14 @@ of them, you need to download and install them on your system. - [Numpy](http://numpy.scipy.org/) is a scientific computing package for Python. Required for the *Python interface*. - [Intel Threading Building Blocks (*TBB*)](http://threadingbuildingblocks.org/file.php?fid=77) is used inside OpenCV for parallel code snippets. Using this will make sure that the OpenCV library will take advantage of all the cores - you have in your systems CPU. + you have in your system's CPU. - [Intel Integrated Performance Primitives (*IPP*)](http://software.intel.com/en-us/articles/intel-ipp/) may be used to improve the performance of color conversion, Haar training and DFT functions of the OpenCV library. Watch out, since this isn't a free service. - [Intel IPP Asynchronous C/C++](http://software.intel.com/en-us/intel-ipp-preview) is currently focused delivering Intel Graphics support for advanced image processing and computer vision functions. - OpenCV offers a somewhat fancier and more useful graphical user interface, than the default one - by using the [Qt framework](http://qt.nokia.com/downloads). For a quick overview of what this has to offer look into the + by using the [Qt framework](http://qt.nokia.com/downloads). For a quick overview of what this has to offer, look into the documentations *highgui* module, under the *Qt New Functions* section. Version 4.6 or later of the framework is required. - [Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page#Download) is a C++ template library for linear algebra. @@ -83,7 +83,7 @@ of them, you need to download and install them on your system. more of our algorithms to work on the GPUs is a constant effort of the OpenCV team. - [OpenEXR](http://www.openexr.com/downloads.html) source files are required for the library to work with this high dynamic range (HDR) image file format. -- The OpenNI Framework contains a set of open source APIs that provide support for natural interaction with devices via methods such as voice command recognition, hand gestures and body +- The OpenNI Framework contains a set of open source APIs that provide support for natural interaction with devices via methods such as voice command recognition, hand gestures, and body motion tracking. Prebuilt binaries can be found [here](http://structure.io/openni). The source code of [OpenNI](https://github.com/OpenNI/OpenNI) and [OpenNI2](https://github.com/OpenNI/OpenNI2) are also available on Github. - [Miktex]( http://miktex.org/2.9/setup) is the best [TEX](https://secure.wikimedia.org/wikipedia/en/wiki/TeX) implementation on the Windows OS. It is required to build the *OpenCV documentation*. @@ -203,7 +203,7 @@ libraries). If you do not need the support for some of these you can just freely @code{.bash} nmake @endcode - After this set the Qt enviroment variables using the following command on Windows 7: + After this set the Qt environment variables using the following command on Windows 7: @code{.bash} setx -m QTDIR D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3 @endcode @@ -266,8 +266,8 @@ libraries). If you do not need the support for some of these you can just freely fully functional on your computer. - *BUILD_PACKAGE* -\> Prior to version 2.3 with this you could build a project that will build an OpenCV installer. With this you can easily install your OpenCV flavor on other - systems. For the latest source files of OpenCV it generates a new project that simply - creates zip archive with OpenCV sources. + systems. For the latest source files of OpenCV, it generates a new project that simply + creates a zip archive with OpenCV sources. - *BUILD_SHARED_LIBS* -\> With this you can control to build DLL files (when turned on) or static library files (\*.lib) otherwise. - *BUILD_TESTS* -\> Each module of OpenCV has a test project assigned to it. Building these @@ -291,7 +291,7 @@ libraries). If you do not need the support for some of these you can just freely ![](images/OpenCVBuildResultWindows.jpg) - For the documentation you need to explicitly issue the build commands on the *doc* project for + For the documentation, you need to explicitly issue the build commands on the *doc* project for the PDF files and on the *doc_html* for the HTML ones. Each of these will call *Sphinx* to do all the hard work. You can find the generated documentation inside the `Build/Doc/_html` for the HTML pages and within the `Build/Doc` the PDF manuals. @@ -299,7 +299,7 @@ libraries). If you do not need the support for some of these you can just freely ![](images/WindowsBuildDoc.png) To collect the header and the binary files, that you will use during your own projects, into a - separate directory (simillary to how the pre-built binaries ship) you need to explicitely build + separate directory (simillary to how the pre-built binaries ship) you need to explicitly build the *Install* project. ![](images/WindowsBuildInstall.png) @@ -321,10 +321,10 @@ libraries). If you do not need the support for some of these you can just freely caused mostly by old video card drivers. For testing the GPU (if built) run the *performance_gpu.exe* sample application. -Set the OpenCV enviroment variable and add it to the systems path {#tutorial_windows_install_path} +Set the OpenCV environment variable and add it to the systems path {#tutorial_windows_install_path} ================================================================= -First we set an enviroment variable to make easier our work. This will hold the build directory of +First we set an environment variable to make easier our work. This will hold the build directory of our OpenCV library that we use in our projects. Start up a command window and enter: @code setx -m OPENCV_DIR D:\OpenCV\Build\x86\vc10 (suggested for Visual Studio 2010 - 32 bit Windows) diff --git a/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.markdown b/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.markdown index 3be7f5bb87..2c9d1903db 100644 --- a/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.markdown +++ b/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.markdown @@ -11,7 +11,7 @@ header files plus binaries and you have set the environment variables as describ The OpenCV libraries, distributed by us, on the Microsoft Windows operating system are in a Dynamic Linked Libraries (*DLL*). These have the advantage that all the content of the -library are loaded only at runtime, on demand, and that countless programs may use the same library +library is loaded only at runtime, on demand, and that countless programs may use the same library file. This means that if you have ten applications using the OpenCV library, no need to have around a version for each one of them. Of course you need to have the *dll* of the OpenCV on all systems where you want to run your application. @@ -42,9 +42,9 @@ To build an application with OpenCV you need to do two things: extension libraries. The good part is that at runtime only the *DLL* is required. To pass on all this information to the Visual Studio IDE you can either do it globally (so all your -future projects will get these information) or locally (so only for you current project). The +future projects will get this information) or locally (so only for you current project). The advantage of the global one is that you only need to do it once; however, it may be undesirable to -clump all your projects all the time with all these information. In case of the global one how you +clump all your projects all the time with all this information. In case of the global one how you do it depends on the Microsoft Visual Studio you use. There is a **2008 and previous versions** and a **2010 way** of doing it. Inside the global section of this tutorial I'll show what the main differences are. @@ -53,7 +53,7 @@ The base item of a project in Visual Studio is a solution. A solution may contai Projects are the building blocks of an application. Every project will realize something and you will have a main project in which you can put together this project puzzle. In case of the many simple applications (like many of the tutorials will be) you do not need to break down the -application into modules. In these cases your main project will be the only existing one. Now go +application into modules. In these cases, your main project will be the only existing one. Now go create a new solution inside Visual studio by going through the File --\> New --\> Project menu selection. Choose *Win32 Console Application* as type. Enter its name and select the path where to create it. Then in the upcoming dialog make sure you create an empty project. @@ -91,7 +91,7 @@ projects with custom rules that I do not use it. Go the C++ groups General entry *"Additional Include Directories"* add the path to your OpenCV include. If you don't have *"C/C++"* group, you should add any .c/.cpp file to the project. @code{.bash} -\f$(OPENCV_DIR)\..\..\include +$(OPENCV_DIR)\..\..\include @endcode ![](images/PropertySheetOpenCVInclude.jpg) @@ -152,7 +152,7 @@ them. ![](images/PropertySheetOpenCVLibrariesRelease.jpg) -You can find your property sheets inside your projects directory. At this point it is a wise +You can find your property sheets inside your projects directory. At this point, it is a wise decision to back them up into some special directory, to always have them at hand in the future, whenever you create an OpenCV project. Note that for Visual Studio 2010 the file extension is *props*, while for 2008 this is *vsprops*. @@ -167,7 +167,7 @@ entry inside the Property Manager to easily add the OpenCV build rules. The *global* method ------------------- -In case you find to troublesome to add the property pages to each and every one of your projects you +In case you find it too troublesome to add the property pages to each and every one of your projects you can also add this rules to a *"global property page"*. However, this applies only to the additional include and library directories. The name of the libraries to use you still need to specify manually by using for instance: a Property page. @@ -202,10 +202,11 @@ current working directory is the projects directory, while otherwise it is the f application file currently is (so usually your build directory). Moreover, in case of starting from the *IDE* the console window will not close once finished. It will wait for a keystroke of yours. -This is important to remember when you code inside the code open and save commands. You're resources +This is important to remember when you code inside the code open and save commands. Your resources will be saved ( and queried for at opening!!!) relatively to your working directory. This is unless -you give a full, explicit path as parameter for the I/O functions. In the code above we open [this -OpenCV logo](https://github.com/opencv/opencv/tree/master/samples/data/opencv-logo.png). Before starting up the application make sure you place +you give a full, explicit path as a parameter for the I/O functions. In the code above we open [this +OpenCV logo](https://github.com/opencv/opencv/tree/master/samples/data/opencv-logo.png). Before starting up the application, +make sure you place the image file in your current working directory. Modify the image file name inside the code to try it out on other images too. Run it and voil á: @@ -214,8 +215,8 @@ it out on other images too. Run it and voil á: Command line arguments with Visual Studio ----------------------------------------- -Throughout some of our future tutorials you'll see that the programs main input method will be by -giving a runtime argument. To do this you can just start up a commmand windows (cmd + Enter in the +Throughout some of our future tutorials, you'll see that the programs main input method will be by +giving a runtime argument. To do this you can just start up a command windows (cmd + Enter in the start menu), navigate to your executable file and start it with an argument. So for example in case of my upper project this would look like: @code{.bash} @@ -232,5 +233,5 @@ cumbersome task. Luckily, in the Visual Studio there is a menu to automate all t ![](images/VisualStudioCommandLineArguments.jpg) Specify here the name of the inputs and while you start your application from the Visual Studio -enviroment you have automatic argument passing. In the next introductionary tutorial you'll see an +environment you have automatic argument passing. In the next introductory tutorial you'll see an in-depth explanation of the upper source code: @ref tutorial_display_image. From 3650ec02be2eef242c6932611930b65521b6a2f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorena=20Garc=C3=ADa?= Date: Tue, 3 Jan 2017 18:34:04 +0100 Subject: [PATCH 5/6] HitMiss tutorial --- .../imgproc/hitOrMiss/hitOrMiss.markdown | 60 ++++++++++++++++++ .../hitOrMiss/images/hitmiss_example2.png | Bin 0 -> 22299 bytes .../hitOrMiss/images/hitmiss_example3.png | Bin 0 -> 22802 bytes .../hitOrMiss/images/hitmiss_input.png | Bin 0 -> 25033 bytes .../hitOrMiss/images/hitmiss_kernels.png | Bin 0 -> 11040 bytes .../hitOrMiss/images/hitmiss_output.png | Bin 0 -> 18677 bytes .../imgproc/table_of_content_imgproc.markdown | 8 +++ modules/imgproc/include/opencv2/imgproc.hpp | 4 +- samples/cpp/tutorial_code/ImgProc/HitMiss.cpp | 32 ++++++++++ 9 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 doc/tutorials/imgproc/hitOrMiss/hitOrMiss.markdown create mode 100644 doc/tutorials/imgproc/hitOrMiss/images/hitmiss_example2.png create mode 100644 doc/tutorials/imgproc/hitOrMiss/images/hitmiss_example3.png create mode 100644 doc/tutorials/imgproc/hitOrMiss/images/hitmiss_input.png create mode 100644 doc/tutorials/imgproc/hitOrMiss/images/hitmiss_kernels.png create mode 100644 doc/tutorials/imgproc/hitOrMiss/images/hitmiss_output.png create mode 100644 samples/cpp/tutorial_code/ImgProc/HitMiss.cpp diff --git a/doc/tutorials/imgproc/hitOrMiss/hitOrMiss.markdown b/doc/tutorials/imgproc/hitOrMiss/hitOrMiss.markdown new file mode 100644 index 0000000000..085e7c2e00 --- /dev/null +++ b/doc/tutorials/imgproc/hitOrMiss/hitOrMiss.markdown @@ -0,0 +1,60 @@ +Hit-or-Miss {#tutorial_hitOrMiss} +================================= + +Goal +---- + +In this tutorial you will learn how to find a given configuration or pattern in a binary image by using the Hit-or-Miss transform (also known as Hit-and-Miss transform). +This transform is also the basis of more advanced morphological operations such as thinning or pruning. + +We will use the OpenCV function @ref cv::morphologyEx. + + + +Hit-or-Miss theory +------------------- + +Morphological operators process images based on their shape. These operators apply one or more *structuring elements* to an input image to obtain the output image. +The two basic morphological operations are the *erosion* and the *dilation*. The combination of these two operations generate advanced morphological transformations such as *opening*, *closing*, or *top-hat* transform. +To know more about these and other basic morphological operations refer to previous tutorials @ref tutorial_erosion_dilatation "here" and @ref tutorial_opening_closing_hats "here". + +The Hit-or-Miss transformation is useful to find patterns in binary images. In particular, it finds those pixels whose neighbourhood matches the shape of a first structuring element \f$B_1\f$ +while not matching the shape of a second structuring element \f$B_2\f$ at the same time. Mathematically, the operation applied to an image \f$A\f$ can be expressed as follows: +\f[ + A\circledast B = (A\ominus B_1) \cap (A^c\ominus B_2) +\f] + +Therefore, the hit-or-miss operation comprises three steps: + 1. Erode image \f$A\f$ with structuring element \f$B_1\f$. + 2. Erode the complement of image \f$A\f$ (\f$A^c\f$) with structuring element \f$B_2\f$. + 3. AND results from step 1 and step 2. + +The structuring elements \f$B_1\f$ and \f$B_2\f$ can be combined into a single element \f$B\f$. Let's see an example: +![Structuring elements (kernels). Left: kernel to 'hit'. Middle: kernel to 'miss'. Right: final combined kernel](images/hitmiss_kernels.png) + +In this case, we are looking for a pattern in which the central pixel belongs to the background while the north, south, east, and west pixels belong to the foreground. The rest of pixels in the neighbourhood can be of any kind, we don't care about them. Now, let's apply this kernel to an input image: + +![Input binary image](images/hitmiss_input.png) +![Output binary image](images/hitmiss_output.png) + +You can see that the pattern is found in just one location within the image. + + +Code +---- + +The code corresponding to the previous example is shown below. You can also download it from +[here](https://github.com/opencv/opencv/tree/master/samples/cpp/tutorial_code/ImgProc/HitMiss.cpp) +@include samples/cpp/tutorial_code/ImgProc/HitMiss.cpp + +As you can see, it is as simple as using the function @ref cv::morphologyEx with the operation type @ref cv::MORPH_HITMISS and the chosen kernel. + +Other examples +-------------- + +Here you can find the output results of applying different kernels to the same input image used before: + +![Kernel and output result for finding top-right corners](images/hitmiss_example2.png) +![Kernel and output result for finding left end points](images/hitmiss_example3.png) + +Now try your own patterns! diff --git a/doc/tutorials/imgproc/hitOrMiss/images/hitmiss_example2.png b/doc/tutorials/imgproc/hitOrMiss/images/hitmiss_example2.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e0efba13d1efaa72ee6460cc92f6e32f0a899f GIT binary patch literal 22299 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 literal 0 HcmV?d00001 diff --git a/doc/tutorials/imgproc/hitOrMiss/images/hitmiss_output.png b/doc/tutorials/imgproc/hitOrMiss/images/hitmiss_output.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b81638ed419774ca6e5dcd082767cc28a6e83e GIT binary patch literal 18677 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 OpenCV 2.4 + + *Author:* Lorena García + + Learn how to find patterns in binary images using the Hit-or-Miss operation + - @subpage tutorial_moprh_lines_detection *Compatibility:* \> OpenCV 2.0 diff --git a/modules/imgproc/include/opencv2/imgproc.hpp b/modules/imgproc/include/opencv2/imgproc.hpp index 007a238d67..95e5a1592b 100644 --- a/modules/imgproc/include/opencv2/imgproc.hpp +++ b/modules/imgproc/include/opencv2/imgproc.hpp @@ -245,8 +245,8 @@ enum MorphTypes{ //!< \f[\texttt{dst} = \mathrm{tophat} ( \texttt{src} , \texttt{element} )= \texttt{src} - \mathrm{open} ( \texttt{src} , \texttt{element} )\f] MORPH_BLACKHAT = 6, //!< "black hat" //!< \f[\texttt{dst} = \mathrm{blackhat} ( \texttt{src} , \texttt{element} )= \mathrm{close} ( \texttt{src} , \texttt{element} )- \texttt{src}\f] - MORPH_HITMISS = 7 //!< "hit and miss" - //!< .- Only supported for CV_8UC1 binary images. Tutorial can be found in [this page](https://web.archive.org/web/20160316070407/http://opencv-code.com/tutorials/hit-or-miss-transform-in-opencv/) + MORPH_HITMISS = 7 //!< "hit or miss" + //!< .- Only supported for CV_8UC1 binary images. A tutorial can be found in the documentation }; //! shape of the structuring element diff --git a/samples/cpp/tutorial_code/ImgProc/HitMiss.cpp b/samples/cpp/tutorial_code/ImgProc/HitMiss.cpp new file mode 100644 index 0000000000..0463aabe39 --- /dev/null +++ b/samples/cpp/tutorial_code/ImgProc/HitMiss.cpp @@ -0,0 +1,32 @@ +#include +#include +#include + +using namespace cv; + +int main(){ + Mat input_image = (Mat_(8, 8) << + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 255, 255, 0, 0, 0, 255, + 0, 255, 255, 255, 0, 0, 0, 0, + 0, 255, 255, 255, 0, 255, 0, 0, + 0, 0, 255, 0, 0, 0, 0, 0, + 0, 0, 255, 0, 0, 255, 255, 0, + 0, 255, 0, 255, 0, 0, 255, 0, + 0, 255, 255, 255, 0, 0, 0, 0); + + Mat kernel = (Mat_(3, 3) << + 0, 1, 0, + 1, -1, 1, + 0, 1, 0); + + Mat output_image; + morphologyEx(input_image, output_image, MORPH_HITMISS, kernel); + + namedWindow("Original", CV_WINDOW_NORMAL); + imshow("Original", input_image); + namedWindow("Hit or Miss", CV_WINDOW_NORMAL); + imshow("Hit or Miss", output_image); + waitKey(0); + return 0; +} \ No newline at end of file From fa36b9d3455d62e98554a996dea3ebf7201109c2 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Tue, 3 Jan 2017 22:18:27 +0300 Subject: [PATCH 6/6] imgproc: fix using of uninitialized edge[] members in FillConvexPoly --- modules/imgproc/src/drawing.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/imgproc/src/drawing.cpp b/modules/imgproc/src/drawing.cpp index 113f499d98..9099d7378a 100644 --- a/modules/imgproc/src/drawing.cpp +++ b/modules/imgproc/src/drawing.cpp @@ -1171,6 +1171,9 @@ FillConvexPoly( Mat& img, const Point2l* v, int npts, const void* color, int lin edge[0].di = 1; edge[1].di = npts - 1; + edge[0].x = edge[1].x = -XY_ONE; + edge[0].dx = edge[1].dx = 0; + ptr += img.step*y; do @@ -1213,6 +1216,9 @@ FillConvexPoly( Mat& img, const Point2l* v, int npts, const void* color, int lin } } + if (edges < 0) + break; + if (y >= 0) { int left = 0, right = 1;