Пример #1
0
        public static Func <System.Drawing.PointF, double> FnInContour(VectorOfPoint contour)
        {
            var incontour = new Func <System.Drawing.PointF, double>((pt) =>
            {
                float ceilX = (float)Math.Ceiling((double)pt.X);
                float ceilY = (float)Math.Ceiling((double)pt.Y);
                float trunX = (float)Math.Truncate((double)pt.X);
                float trunY = (float)Math.Truncate((double)pt.Y);

                List <double> outlist         = new List <double>();
                System.Drawing.PointF[] ptArr = new System.Drawing.PointF[4];

                ptArr[0] = new System.Drawing.PointF(ceilX, ceilY);
                ptArr[1] = new System.Drawing.PointF(trunX, ceilY);
                ptArr[2] = new System.Drawing.PointF(ceilX, trunY);
                ptArr[3] = new System.Drawing.PointF(trunX, trunY);

                for (int i = 0; i < ptArr.GetLength(0); i++)
                {
                    outlist.Add(CvInvoke.PointPolygonTest(contour, ptArr[i], false));
                }
                return(outlist.Max());
            });

            return(incontour);
        }
Пример #2
0
		internal void savePtfArray(PointF[] pts)
		{
			if (pts == null)
			{
				writer.Write((int)0);
				return;
			}
			writer.Write((int)1);

			writer.Write(pts.GetLength(0));
			for (int i = 0; i < pts.GetLength(0); ++i)
			{
				writer.Write((double)pts[i].X);
				writer.Write((double)pts[i].Y);
			}
		}
Пример #3
0
 public PointF[] GetStartingPoints(PointF[] shots)
 {
     PointF[] output = new PointF[shots.GetLength(0)];
     for (int i = 0; i < shots.GetLength(0); i++)
     {
         output[i] = new PointF(shots[i].X - (N / 2), shots[i].Y - (N / 2));
     }
     return output;
 }