Пример #1
0
        // projective.c (513, 1)
        // pixProjectivePtaGray(pixs, ptad, ptas, grayval) as Pix
        // pixProjectivePtaGray(PIX *, PTA *, PTA *, l_uint8) as PIX *
        ///  <summary>
        /// pixProjectivePtaGray()
        ///  </summary>
        ///  <remarks>
        ///  </remarks>
        ///  <include file="..\CHM_Help\IncludeComments.xml" path="Comments/pixProjectivePtaGray/*"/>
        ///  <param name="pixs">[in] - 8 bpp</param>
        ///  <param name="ptad">[in] - 4 pts of final coordinate space</param>
        ///  <param name="ptas">[in] - 4 pts of initial coordinate space</param>
        ///  <param name="grayval">[in] - 0 to bring in BLACK, 255 for WHITE</param>
        ///   <returns>pixd, or NULL on error</returns>
        public static Pix pixProjectivePtaGray(
            Pix pixs,
            Pta ptad,
            Pta ptas,
            byte grayval)
        {
            if (pixs == null)
            {
                throw new ArgumentNullException("pixs cannot be Nothing");
            }

            if (ptad == null)
            {
                throw new ArgumentNullException("ptad cannot be Nothing");
            }

            if (ptas == null)
            {
                throw new ArgumentNullException("ptas cannot be Nothing");
            }

            if ((new List <int> {
                8
            }).Contains((int)pixs.d) == false)
            {
                throw new ArgumentException("8 bpp");
            }
            IntPtr _Result = Natives.pixProjectivePtaGray(pixs.Pointer, ptad.Pointer, ptas.Pointer, grayval);

            if (_Result == IntPtr.Zero)
            {
                return(null);
            }

            return(new Pix(_Result));
        }
Пример #2
0
        // ptabasic.c (888, 1)
        // ptaWriteMem(pdata, psize, pta, type) as int
        // ptaWriteMem(l_uint8 **, size_t *, PTA *, l_int32) as l_ok
        ///  <summary>
        /// (1) Serializes a pta in memory and puts the result in a buffer.
        ///  </summary>
        ///  <remarks>
        ///  </remarks>
        ///  <include file="..\CHM_Help\IncludeComments.xml" path="Comments/ptaWriteMem/*"/>
        ///  <param name="pdata">[out] - data of serialized pta ascii</param>
        ///  <param name="psize">[out] - size of returned data</param>
        ///  <param name="pta">[in] - </param>
        ///  <param name="type">[in] - 0 for float values 1 for integer values</param>
        ///   <returns>0 if OK, 1 on error</returns>
        public static int ptaWriteMem(
            out Byte[] pdata,
            out uint psize,
            Pta pta,
            int type)
        {
            if (pta == null)
            {
                throw new ArgumentNullException("pta cannot be Nothing");
            }

            IntPtr pdataPtr = IntPtr.Zero;
            int    _Result  = Natives.ptaWriteMem(out pdataPtr, out psize, pta.Pointer, type);

            Byte[] pdataGen = new Byte[psize];

            if (pdataPtr != IntPtr.Zero)
            {
                Marshal.Copy(pdataPtr, pdataGen, 0, pdataGen.Length);
            }

            pdata = pdataGen;
            return(_Result);
        }
Пример #3
0
        // boxfunc2.c (1170, 1)
        // boxaExtractAsPta(boxa, pptal, pptat, pptar, pptab, pptaw, pptah, keepinvalid) as int
        // boxaExtractAsPta(BOXA *, PTA **, PTA **, PTA **, PTA **, PTA **, PTA **, l_int32) as l_ok
        ///  <summary>
        /// (1) For most applications, such as counting, sorting, fitting
        /// to some parametrized form, plotting or filtering in general,
        /// you should remove the invalid boxes.  Each pta saves the
        /// box index in the x array, so replacing invalid boxes by
        /// filling with boxaFillSequence(), which is required for
        /// boxaExtractAsNuma(), is not necessary.<para/>
        ///
        /// (2) If invalid boxes are retained, each one will result in
        /// entries (typically 0) in all selected output pta.
        ///  </summary>
        ///  <remarks>
        ///  </remarks>
        ///  <include file="..\CHM_Help\IncludeComments.xml" path="Comments/boxaExtractAsPta/*"/>
        ///  <param name="boxa">[in] - </param>
        ///  <param name="pptal">[out][optional] - array of left locations vs. index</param>
        ///  <param name="pptat">[out][optional] - array of top locations vs. index</param>
        ///  <param name="pptar">[out][optional] - array of right locations vs. index</param>
        ///  <param name="pptab">[out][optional] - array of bottom locations vs. index</param>
        ///  <param name="pptaw">[out][optional] - array of widths vs. index</param>
        ///  <param name="pptah">[out][optional] - array of heights vs. index</param>
        ///  <param name="keepinvalid">[in] - 1 to keep invalid boxes 0 to remove them</param>
        ///   <returns>0 if OK, 1 on error</returns>
        public static int boxaExtractAsPta(
            Boxa boxa,
            out Pta pptal,
            out Pta pptat,
            out Pta pptar,
            out Pta pptab,
            out Pta pptaw,
            out Pta pptah,
            int keepinvalid)
        {
            if (boxa == null)
            {
                throw new ArgumentNullException("boxa cannot be Nothing");
            }

            IntPtr pptalPtr = IntPtr.Zero;
            IntPtr pptatPtr = IntPtr.Zero;
            IntPtr pptarPtr = IntPtr.Zero;
            IntPtr pptabPtr = IntPtr.Zero;
            IntPtr pptawPtr = IntPtr.Zero;
            IntPtr pptahPtr = IntPtr.Zero;
            int    _Result  = Natives.boxaExtractAsPta(boxa.Pointer, out pptalPtr, out pptatPtr, out pptarPtr, out pptabPtr, out pptawPtr, out pptahPtr, keepinvalid);

            if (pptalPtr == IntPtr.Zero)
            {
                pptal = null;
            }
            else
            {
                pptal = new Pta(pptalPtr);
            };
            if (pptatPtr == IntPtr.Zero)
            {
                pptat = null;
            }
            else
            {
                pptat = new Pta(pptatPtr);
            };
            if (pptarPtr == IntPtr.Zero)
            {
                pptar = null;
            }
            else
            {
                pptar = new Pta(pptarPtr);
            };
            if (pptabPtr == IntPtr.Zero)
            {
                pptab = null;
            }
            else
            {
                pptab = new Pta(pptabPtr);
            };
            if (pptawPtr == IntPtr.Zero)
            {
                pptaw = null;
            }
            else
            {
                pptaw = new Pta(pptawPtr);
            };
            if (pptahPtr == IntPtr.Zero)
            {
                pptah = null;
            }
            else
            {
                pptah = new Pta(pptahPtr);
            };

            return(_Result);
        }