/// The lines extraction methodology described in the following is mainly based on: R Grompone Von Gioi, Jeremie Jakubowicz, Jean-Michel Morel, and Gregory Randall. Lsd: A fast line segment detector with a false detection control. IEEE Transactions on Pattern Analysis and Machine Intelligence, 32(4):722–732, 2010.
/// Finds rectangular regions in the given image that are likely to contain objects the cascade has been trained for and returns those regions as a sequence of rectangles.
/// Detects objects of different sizes in the input image.
/// </summary>
/// </summary>
/// <param name="image">The image where search will take place</param>
/// <returns>An array of regions for the detected objects</returns>
/// <param name="image">Matrix of type CV_8U containing an image where objects should be detected.</param>
/// <param name="objects">Buffer to store detected objects (rectangles).</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// Coefficient to regulate the similarity threshold. When detected, some objects can be covered by many rectangles. 0 means not to perform grouping. See groupRectangles.
/// Threshold for the distance between features and SVM classifying plane. Usually it is 0 and should be specfied in the detector coefficients (as the last free coefficient). But if the free coefficient is omitted (which is allowed), you can specify it manually here.
/// <param name="src">Source matrix. 1-, 4-, 8-byte element sizes are supported for now.</param>
/// <param name="dst">Destination matrix.</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="fx">Scale factor along the horizontal axis. If it is zero, it is computed as: (double)dsize.width/src.cols</param>
/// <param name="fy">Scale factor along the vertical axis. If it is zero, it is computed as: (double)dsize.height/src.rows</param>
/// <param name="dsize">Destination image size. If it is zero, it is computed as: dsize = Size(round(fx* src.cols), round(fy* src.rows)). Either dsize or both fx and fy must be non-zero.</param>
/// <param name="src">Source matrix. Any matrices except 64F are supported.</param>
/// <param name="dst">The GpuMat to store the result</param>
/// <param name="normType">Norm type. NORM_L1 , NORM_L2 , and NORM_INF are supported for now.</param>
/// <param name="mask">optional operation mask; it must have the same size as src1 and CV_8UC1 type.</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="src1">Source matrix. Any matrices except 64F are supported.</param>
/// <param name="src2">Second source matrix (if any) with the same size and type as src1.</param>
/// <param name="dst">The GpuMat where the result will be stored in</param>
/// <param name="normType">Norm type. NORM_L1 , NORM_L2 , and NORM_INF are supported for now.</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// Returns the sum of absolute values for matrix elements.
/// </summary>
/// <param name="src">Source image of any depth except for CV_64F.</param>
/// <param name="dst">The GpuMat where the result will be stored.</param>
/// <param name="mask">optional operation mask; it must have the same size as src1 and CV_8UC1 type.</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="src">Source image of any depth except for CV_64F.</param>
/// <param name="dst">The GpuMat where the result will be stored</param>
/// <param name="mask">optional operation mask; it must have the same size as src1 and CV_8UC1 type.</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="borderMode">The border mode, use BORDER_TYPE.CONSTANT for default.</param>
/// <param name="borderMode">The border mode, use BORDER_TYPE.CONSTANT for default.</param>
/// <param name="borderValue">The border value, use new MCvScalar() for default.</param>
/// <param name="borderValue">The border value, use new MCvScalar() for default.</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="dSize">The size of the destination image</param>
/// <param name="borderMode">The border mode, use BORDER_TYPE.CONSTANT for default.</param>
/// <param name="borderMode">The border mode, use BORDER_TYPE.CONSTANT for default.</param>
/// <param name="borderValue">The border value, use new MCvScalar() for default.</param>
/// <param name="borderValue">The border value, use new MCvScalar() for default.</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="dSize">The size of the destination image</param>
/// <param name="angle">Angle of rotation in degrees</param>
/// <param name="angle">Angle of rotation in degrees</param>
/// <param name="xShift">Shift along the horizontal axis</param>
/// <param name="xShift">Shift along the horizontal axis</param>
/// <param name="yShift">Shift along the verticle axis</param>
/// <param name="yShift">Shift along the verticle axis</param>
/// <param name="dSize">The size of the destination image</param>
/// <param name="interpolation">Interpolation method. Only INTER_NEAREST, INTER_LINEAR, and INTER_CUBIC are supported.</param>
/// <param name="interpolation">Interpolation method. Only INTER_NEAREST, INTER_LINEAR, and INTER_CUBIC are supported.</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="dst">The resulting GpuMat of the DST, must be pre-allocated and continious. If single channel, the result is real. If double channel, the result is complex</param>
/// <param name="dst">The resulting GpuMat of the DST, must be pre-allocated and continious. If single channel, the result is real. If double channel, the result is complex</param>
/// <param name="dftSize">Size of a discrete Fourier transform.</param>
/// <param name="flags">DFT flags</param>
/// <param name="flags">DFT flags</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>
/// <param name="stream">Use a Stream to call the function asynchronously (non-blocking) or null to call the function synchronously (blocking).</param>