コード例 #1
0
        /// <summary>
        /// Finds lines in the input image.
        /// This is the output of the default parameters of the algorithm on the above shown image.
        /// </summary>
        /// <param name="image">A grayscale (CV_8UC1) input image. </param>
        /// <param name="lines">A vector of Vec4i or Vec4f elements specifying the beginning and ending point of a line.
        /// Where Vec4i/Vec4f is (x1, y1, x2, y2), point 1 is the start, point 2 - end. Returned lines are strictly oriented depending on the gradient.</param>
        /// <param name="width">Vector of widths of the regions, where the lines are found. E.g. Width of line.</param>
        /// <param name="prec">Vector of precisions with which the lines are found.</param>
        /// <param name="nfa">Vector containing number of false alarms in the line region,
        /// with precision of 10%. The bigger the value, logarithmically better the detection.</param>
        public virtual void Detect(InputArray image, out Vec4f[] lines,
                                   out double[] width, out double[] prec, out double[] nfa)
        {
            if (image == null)
            {
                throw new ArgumentNullException("nameof(image)");
            }
            image.ThrowIfDisposed();

            using (var linesVec = new VectorOfVec4f())
                using (var widthVec = new VectorOfDouble())
                    using (var precVec = new VectorOfDouble())
                        using (var nfaVec = new VectorOfDouble())
                        {
                            NativeMethods.imgproc_LineSegmentDetector_detect_vector(ptr, image.CvPtr,
                                                                                    linesVec.CvPtr, widthVec.CvPtr, precVec.CvPtr, nfaVec.CvPtr);

                            lines = linesVec.ToArray();
                            width = widthVec.ToArray();
                            prec  = precVec.ToArray();
                            nfa   = nfaVec.ToArray();
                        }

            GC.KeepAlive(image);
        }
コード例 #2
0
 /// <summary>
 /// Returns a list of all edges.
 /// </summary>
 /// <returns>Output vector.</returns>
 public Vec4f[] GetEdgeList()
 {
     ThrowIfDisposed();
     using var vec = new VectorOfVec4f();
     NativeMethods.HandleException(
         NativeMethods.imgproc_Subdiv2D_getEdgeList(ptr, vec.CvPtr));
     GC.KeepAlive(this);
     return(vec.ToArray());
 }
コード例 #3
0
 /// <summary>
 ///
 /// </summary>
 /// <returns></returns>
 public Vec4f[] GetEdgeList()
 {
     ThrowIfDisposed();
     NativeMethods.imgproc_Subdiv2D_getEdgeList(ptr, out var p);
     GC.KeepAlive(this);
     using (var vec = new VectorOfVec4f(p))
     {
         return(vec.ToArray());
     }
 }
コード例 #4
0
ファイル: Subdiv2D.cs プロジェクト: zjxbetter/opencvsharp
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public Vec4f[] GetEdgeList()
        {
            ThrowIfDisposed();
            IntPtr p;

            NativeMethods.imgproc_Subdiv2D_getEdgeList(ptr, out p);
            using (VectorOfVec4f vec = new VectorOfVec4f(p))
            {
                return(vec.ToArray());
            }
        }
コード例 #5
0
ファイル: Subdiv2D.cs プロジェクト: 180D-FW-2020/Team13
 /// <summary>
 /// 
 /// </summary>
 /// <returns></returns>
 public Vec4f[] GetEdgeList()
 {
     if (disposed)
         throw new ObjectDisposedException("Subdiv2D", "");
     IntPtr p;
     NativeMethods.imgproc_Subdiv2D_getEdgeList(ptr, out p);
     using (VectorOfVec4f vec = new VectorOfVec4f(p))
     {
         return vec.ToArray();
     }
 }