Example #1
0
        public IActionResult getOffField(STFilterRequestData _objReqData)
        {
            searchcricket sc = new searchcricket();
            List <SearchResultFilterData> obj = new List <SearchResultFilterData>();
            BoolQuery _objNestedBoolQuery     = new BoolQuery();

            if (_objReqData != null)
            {
                MatchDetail _objMatchDetail = _objReqData.MatchDetail;
                Moments     _objMomentsData = _objReqData.Moments;
                if (_objMomentsData != null)
                {
                    if (_objMomentsData.IsBigMoment || _objMomentsData.IsFunnyMoment || _objMomentsData.IsAudioPiece)
                    {
                        QueryContainer _objNestedBoolQueryFor2 = new QueryContainer();
                        _objNestedBoolQueryFor2 = sc.GetMatchDetailQueryST(_objNestedBoolQueryFor2, _objMatchDetail);
                        _objNestedBoolQueryFor2 = sc.GetS2MomentDetailQueryForST(_objMatchDetail, _objNestedBoolQueryFor2, _objMomentsData);
                        var result = EsClient.Search <SearchResultFilterData>(s => s.Index("cricket").Query(q => _objNestedBoolQueryFor2).Size(10000));
                        foreach (var hit in result.Hits)
                        {
                            obj.Add(new SearchResultFilterData
                            {
                                Description  = hit.Source.Description.ToString(),
                                MarkIn       = hit.Source.MarkIn.ToString(),
                                MarkOut      = hit.Source.MarkOut.ToString(),
                                ShotType     = hit.Source.MarkOut.ToString(),
                                DeliveryType = hit.Source.DeliveryType.ToString()
                            });
                        }
                    }
                }
            }
            return(Ok(new { results = obj }));
        }
Example #2
0
        public WelchResult IsGreater(double[] x, double[] y, Threshold threshold = null)
        {
            int n1 = x.Length, n2 = y.Length;

            if (n1 < 2)
            {
                throw new ArgumentException("x should contains at least 2 elements", nameof(x));
            }
            if (n2 < 2)
            {
                throw new ArgumentException("y should contains at least 2 elements", nameof(y));
            }

            Moments xm = Moments.Create(x), ym = Moments.Create(y);
            double  v1 = xm.Variance, v2 = ym.Variance, m1 = xm.Mean, m2 = ym.Mean;

            threshold = threshold ?? RelativeThreshold.Default;
            double thresholdValue = threshold.GetValue(x);
            double se             = Math.Sqrt(v1 / n1 + v2 / n2);
            double t              = ((m1 - m2) - thresholdValue) / se;
            double df             = (v1 / n1 + v2 / n2).Sqr() /
                                    ((v1 / n1).Sqr() / (n1 - 1) + (v2 / n2).Sqr() / (n2 - 1));
            double pValue = 1 - new StudentDistribution(df).Cdf(t);

            return(new WelchResult(t, df, pValue, threshold));
        }
Example #3
0
        public async Task ExecuteFetchMomentsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            try
            {
                if (await ConnectivityService.IsConnected())
                {
                    Moments.Clear();
                    var refreshedMoments = await MomentService.GetMoments();

                    Moments.AddRange(refreshedMoments);
                }
                else
                {
                    DialogService.ShowError(Strings.NoInternetConnection);
                }
            }
            catch (Exception ex)
            {
                Logger.Report(ex);
            }

            IsBusy = false;
        }
        private TXYW DrawToOutput(IEnumerable <OPoint> contour, Parameters para)
        {
            bool detectAngle = para.DetectAngle && (para.Shape != Parameters.TargetShape.Circle);

            rawmat.CopyTo(output3);
            Moments m    = Cv2.Moments(contour);
            TXYW    txyw = new TXYW();

            output3.DrawContours(new IEnumerable <OPoint>[] { contour }, 0, Scalar.Red, 5);

            double comx = m.M10 / m.M00;
            double comy = m.M01 / m.M00;

            Cv2.Circle(output3, (int)comx, (int)comy, 10, Scalar.Red, -1);

            txyw.t = PosFrames;
            txyw.x = comx;
            txyw.y = comy;

            if (detectAngle)
            {
                double       angle = 0.5 * Math.Atan2(2 * m.Mu11, m.Mu20 - m.Mu02);
                const double r     = 50;
                OPoint       arrow = new OPoint(comx + r * Math.Cos(angle), comy + r * Math.Sin(angle));
                Cv2.Line(output3, new OPoint(comx, comy), arrow, Scalar.Red, 5);
                txyw.w = angle;
            }

            Cv2.PutText(output3, $"frame:{txyw.t}",
                        new OPoint(20, videoCapture.FrameHeight - 20),
                        HersheyFonts.HersheySimplex, 2, Scalar.Red, 3);
            return(txyw);
        }
Example #5
0
        private void drawInfoPanel(Rhino.Display.DisplayPipeline pipeline, Rhino.Display.RhinoViewport viewport)
        {
            if (DrawUtil.DrawInfo)
            {
                if (_infoPanel == null)
                {
                    _infoPanel = new InfoPanel();
                    _infoPanel.Positions.Add(Value.Location);

                    _infoPanel.Content.Add("LC: " + LoadCase);
                    if (!Forces.IsTiny())
                    {
                        _infoPanel.Content.Add("Force: " + Forces.Length);
                    }
                    if (!Moments.IsTiny())
                    {
                        _infoPanel.Content.Add("Moment: " + Moments.Length);
                    }
                    if (!Displacement.IsTiny())
                    {
                        _infoPanel.Content.Add("Displacement: " + Displacement.Length);
                    }
                    if (!DisplacementRotational.IsTiny())
                    {
                        _infoPanel.Content.Add("Rot.Displacement: " + DisplacementRotational.Length);
                    }
                }
                _infoPanel.Draw(pipeline, viewport);
            }
        }
Example #6
0
        public bool start(string path)
        {
            if (Provider.Provider.OpenConnection())
            {
                if (Provider.Provider.openProject(path))
                {
                    Element elems = new Element();
                    elems.saveToDataBase(elems.getData(), new element(), new DataModel());

                    MeshPoint nodes = new MeshPoint();
                    nodes.saveToDataBase(nodes.getData(), new nodes(), new DataModel());

                    Moments mts = new Moments();
                    mts.saveToDataBase(mts.getData(), new moment(), new DataModel());

                    MeshElement element = new MeshElement();
                    element.saveToDataBase(element.getData(), new meshele(), new DataModel());

                    Provider.Provider.CloseConnection();
                    return(true);
                }
                else
                {
                    MessageBox.Show("Nie wczytano pliku ...");
                    return(false);
                }
            }
            else
            {
                MessageBox.Show("Nie polaczono ...");
                return(false);
            }
        }
Example #7
0
        public void DrawViewportWires(GH_PreviewWireArgs args)
        {
            //ClippingBox
            //args.Pipeline.DrawBox(ClippingBox, System.Drawing.Color.Black);
            if (!(Value is null)) //if no point or, force AND moment are zero, nothing to draw
            {
                System.Drawing.Color col = args.Color;
                if (!DrawUtil.CheckSelection(col))
                {
                    col = DrawUtil.DrawColorLoads;
                }
                else
                {
                    drawInfoPanel(args.Pipeline, args.Viewport);
                }

                args.Pipeline.DrawPoint(Value.Location, Rhino.Display.PointStyle.X, 5, DrawUtil.DrawColorLoads);

                if (!(Forces.IsTiny() && Moments.IsTiny() && Displacement.IsTiny() && DisplacementRotational.IsTiny()) && DrawUtil.ScaleFactorLoads > 0.0001)
                {
                    if (!_loadCondition.isValid)
                    {
                        updateLoadTransforms();
                    }
                    _loadCondition.Draw(args.Pipeline, col);
                }
            }
        }
Example #8
0
        public async Task ExecuteFetchMomentsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            try
            {
                var connected = await CrossConnectivity.Current.IsRemoteReachable(Keys.ApplicationMobileService, 80, 10000);

                if (connected)
                {
                    Moments.Clear();
                    var refreshedMoments = await MomentService.Instance.GetMoments();

                    Moments.AddRange(refreshedMoments);
                }
                else
                {
                    DialogService.ShowError(Strings.NoInternetConnection);
                }
            }
            catch (Exception ex)
            {
                Xamarin.Insights.Report(ex);
            }

            IsBusy = false;
        }
 //目标质心坐标点计算
 private void ucBtnExt_A4_BtnClick(object sender, EventArgs e)
 {
     //计算苹果质心
     apple_moment   = Cv2.Moments(apple_contours[0]);
     apple_center.X = (int)(apple_moment.M10 / apple_moment.M00);
     apple_center.Y = (int)(apple_moment.M01 / apple_moment.M00);
     //绘制出来
     Cv2.Circle(background_mask, apple_center, 3, new Scalar(255), -1);
     //计算梨子质心
     for (int i = 0; i < pear_contours.Length; i++)
     {
         if (Cv2.ArcLength(pear_contours[i], true) > 40)   //轮廓周长大于40时计算
         {
             pear_moment   = Cv2.Moments(pear_contours[i]);
             pear_center.X = (int)(pear_moment.M10 / pear_moment.M00);
             pear_center.Y = (int)(pear_moment.M01 / pear_moment.M00);
             //绘制出来
             Cv2.Circle(background_mask, pear_center, 3, new Scalar(255), -1);
         }
     }
     this.pictureBoxIpl_img.ImageIpl = background_mask;
     //输出日志
     newLog = "[msg] 苹果在图像中的质心:(" + apple_center.X.ToString() + ","
              + apple_center.Y.ToString() + "), " + "梨子在图像中的质心:("
              + pear_center.X.ToString() + "," + pear_center.Y.ToString() + ")";
 }
Example #10
0
        private void button3_Click(object sender, EventArgs e)
        {
            Mat result = new Mat(new Size(scr.Width - temp.Width + 1, scr.Height - temp.Height + 1), Emgu.CV.CvEnum.DepthType.Cv8U, 1);

            //创建mat 存储输出匹配结果。
            CvInvoke.MatchTemplate(scr, temp, result, Emgu.CV.CvEnum.TemplateMatchingType.SqdiffNormed); //采用系数匹配法,匹配值越大越接近准确图像。
            CvInvoke.Normalize(result, result, 255, 0, Emgu.CV.CvEnum.NormType.MinMax);                  //把数据进行以最大值255 最小值0 进行归一化。
            result = result.ToImage <Gray, byte>().Mat;                                                  //result 类型转成Byte 类型。
            VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();                                //创建VectorOfVectorOfPoint 类型保存轮廓。
            int threshold = 180;                                                                         //设置阈值。
            Mat data      = new Mat();                                                                   //创建data 存储阈值后的图像。

            while (true)
            {
                CvInvoke.Threshold(result, data, threshold, 255, Emgu.CV.CvEnum.ThresholdType.BinaryInv);                                          //阈值操作。
                CvInvoke.FindContours(data, contours, null, Emgu.CV.CvEnum.RetrType.External, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple); // 存储轮廓。

                if (contours.Size <= 1)                                                                                                            //判断匹配个数是否小于等于10
                {
                    break;
                }
                threshold -= 2;                     //阈值降低
            }
            for (int i = 0; i < contours.Size; i++) //遍历每个连通域。
            {
                VectorOfPoint contour = contours[i];

                Moments moment = CvInvoke.Moments(contour);                                                 //获得连通域的矩
                Point   p      = new Point((int)(moment.M10 / moment.M00), (int)(moment.M01 / moment.M00)); // 获得连通域的中心
                CvInvoke.Rectangle(scr, new Rectangle(p, temp.Size), new MCvScalar(0, 0, 255), 4);          //绘制匹配区域。
            }
            imageBox1.Image = scr;
        }
Example #11
0
        public async Task <ActionResult> AddMoment(Moments moment, IFormFile file)
        {
            try
            {
                if (file != null)
                {
                    var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\img\\Moments", file.FileName);

                    using (var stream = new FileStream(path, FileMode.Create))
                    {
                        await file.CopyToAsync(stream);
                    }

                    moment.CoverPhotoPath = file.FileName;
                }

                momentsRepository.AddMoment(moment);

                ViewData["State"] = "Anınız onaylandıktan sonra yayınlanacaktır";

                return(View("Index"));
            }
            catch (Exception e)
            {
                ViewData["State"] = "Hata oluştu lütfen daha sonra tekrar deneyiniz";
                return(View("Index"));
            }
        }
Example #12
0
        public void CalculateMoments(Bitmap bmp, ref Moments moments)
        {
            moments.resetmoments();
            //Κώδικας σάρωσης εικόνας
            int        width  = bmp.Width;
            int        height = bmp.Height;
            BitmapData bmData = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite,
                                             PixelFormat.Format24bppRgb);
            int stride = bmData.Stride;

            System.IntPtr Scan0 = bmData.Scan0;
            unsafe
            {
                byte *p = (byte *)(void *)Scan0;
                for (int y = 0; y < height; y++)
                {
                    for (int x = 0; x < width; x++)
                    {
                        int i = y * stride + x * 3;
                        if (p[i] == 255)
                        {
                            moments.M00++;
                            moments.M10 += x;
                            moments.M01 += y;
                            moments.M11 += x * y;
                            moments.M20 += x * x;
                            moments.M02 += y * y;
                        }
                    }
                }
            }
            bmp.UnlockBits(bmData);
        }
Example #13
0
 //Добавляет в Momnets мгновенное значение mv, сохраняя упорядоченность sv по времени
 public void AddMoment(Moment mv)
 {
     if (Moments == null)
     {
         Moments = new List <Moment>();
     }
     if (Moments.Count == 0 || mv.Time > Moments[Moments.Count - 1].Time)
     {
         Moments.Add(mv);
     }
     else if (mv.Time == Moments[Moments.Count - 1].Time)
     {
         Moments.Add(mv.Clone(mv.Time.AddMilliseconds(0.6)));
     }
     else
     {
         int i = Moments.Count - 1;
         while (i >= 0 && Moments[i].Time >= mv.Time)
         {
             i--;
         }
         if (mv.Time != Moments[i + 1].Time)
         {
             Moments.Insert(i + 1, mv);
         }
     }
 }
Example #14
0
        public void DrawViewportWires(GH_PreviewWireArgs args)
        {
            //draw clippingbox
            //args.Pipeline.DrawBox(ClippingBox, System.Drawing.Color.Black);
            if (!(Value is null))
            {
                System.Drawing.Color col = args.Color;
                if (!DrawUtil.CheckSelection(col))
                {
                    col = DrawUtil.DrawColorLoads;
                }
                else
                {
                    drawInfoPanel(args.Pipeline, args.Viewport);
                }

                args.Pipeline.DrawCurve(Value, DrawUtil.DrawColorLoads, args.Thickness + 1);

                if (DrawUtil.ScaleFactorLoads > 0.0001 && !(Forces.IsTiny() && Moments.IsTiny()))
                {
                    if (!_loadCondition.isValid)
                    {
                        updateLoadTransforms();
                    }
                    _loadCondition.Draw(args.Pipeline, col);
                }
            }
        }
Example #15
0
        public static void Sample1()
        {
            InitializeSecurityReturns();
            List <SecurityReturns> srList = new List <SecurityReturns> {
                goog, gs, msft, spy
            };

            foreach (SecurityReturns sr in srList)
            {
                //Statistics are annualized using 256 days per year
                double     mean       = 256 * Moments.Mean(sr.returns);
                double     vol        = 16 * Moments.StandardDeviation(sr.returns);
                double     skew       = Moments.Skewness(sr.returns) / 16;
                double     exKurt     = Moments.ExcessKurtosis(sr.returns) / 256;
                Regression regression = new Regression(sr.returns, spy.returns, true, true);

                Console.WriteLine("Summary stats for: {0}", sr.tkr);
                Console.WriteLine("   mean = {0}", mean.ToString("0.00%"));
                Console.WriteLine("    vol = {0}", vol.ToString("0.00%"));
                Console.WriteLine("   skew = {0}", skew.ToString("0.00%"));
                Console.WriteLine(" exKurt = {0}", exKurt.ToString("0.00%"));
                Console.WriteLine("   beta = {0} ({1})", regression.Betas[1].Value.ToString("0.00"), regression.Betas[1].pValue.ToString("0.00%"));
                Console.WriteLine("    R^2 = {0}", regression.rSquared.ToString("0.00%"));
                Console.WriteLine();
            }
            Console.ReadLine();
        }
Example #16
0
            public Point2f GetCenter()
            {
                Moments mu = Cv2.Moments(contour);
                Point2f mc = new Point2f((float)(mu.M10 / mu.M00), (float)(mu.M01 / mu.M00));

                return(mc);
            }
Example #17
0
        public SectionBase AddSubsection()
        {
            var subsection = new Moment();

            Moments.Add(subsection);
            return(subsection);
        }
Example #18
0
        public static ConnectedComponent FromMoments(Moments moments)
        {
            var component = new ConnectedComponent();

            component.Area = moments.M00;

            // Cemtral moments can only be computed for components with non-zero area
            if (moments.M00 > 0)
            {
                // Compute centroid components
                var x = moments.M10 / moments.M00;
                var y = moments.M01 / moments.M00;
                component.Centroid = new Point2f((float)x, (float)y);

                // Compute second-order central moments
                var miu20 = moments.M20 / moments.M00 - x * x;
                var miu02 = moments.M02 / moments.M00 - y * y;
                var miu11 = moments.M11 / moments.M00 - x * y;

                // Compute orientation and major/minor axis length
                var b = 2 * miu11;
                component.Orientation = 0.5 * Math.Atan2(b, miu20 - miu02);
                var deviation = Math.Sqrt(b * b + Math.Pow(miu20 - miu02, 2));
                component.MajorAxisLength = Math.Sqrt(6 * (miu20 + miu02 + deviation));
                component.MinorAxisLength = Math.Sqrt(6 * (miu20 + miu02 - deviation));
            }
            else
            {
                component.Centroid    = new Point2f(float.NaN, float.NaN);
                component.Orientation = double.NaN;
            }

            return(component);
        }
Example #19
0
        public static PadSegmentInfo[] GetPadSegmentInfo(Image <Gray, byte> image, Rectangle ROI)
        {
            List <PadSegmentInfo> padinfo = new List <PadSegmentInfo>();

            using (VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint())
            {
                CvInvoke.FindContours(image, contours, null, Emgu.CV.CvEnum.RetrType.External, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
                for (int i = 0; i < contours.Size; i++)
                {
                    Moments mm = CvInvoke.Moments(contours[i]);
                    if (mm.M00 == 0)
                    {
                        continue;
                    }
                    Point ctCnt = new Point(Convert.ToInt32(mm.M10 / mm.M00), Convert.ToInt32(mm.M01 / mm.M00));
                    ctCnt.X += ROI.X;
                    ctCnt.Y += ROI.Y;
                    Rectangle bound = CvInvoke.BoundingRectangle(contours[i]);
                    bound.X += ROI.X;
                    bound.Y += ROI.Y;
                    double         s   = CvInvoke.ContourArea(contours[i]);
                    PadSegmentInfo pad = new PadSegmentInfo();
                    pad.Contours = contours[i].ToArray();
                    for (int j = 0; j < pad.Contours.Length; j++)
                    {
                        pad.Contours[j] = new Point(pad.Contours[j].X + ROI.X, pad.Contours[j].Y + ROI.Y);
                    }
                    pad.Bouding = bound;
                    pad.Area    = s;
                    pad.Center  = ctCnt;
                    padinfo.Add(pad);
                }
            }
            return(padinfo.ToArray());
        }
Example #20
0
        public static ConnectedComponent FromImage(IplImage image, bool binary = false)
        {
            var moments   = new Moments(image, binary);
            var component = FromMoments(moments);

            component.Patch = image;
            return(component);
        }
Example #21
0
        public static ConnectedComponent FromContour(Seq currentContour)
        {
            var moments   = new Moments(currentContour);
            var component = FromMoments(moments);

            component.Contour = Contour.FromSeq(currentContour);
            return(component);
        }
Example #22
0
 public IObservable <Point2f> Process(IObservable <Contour> source)
 {
     return(source.Select(input =>
     {
         var moments = new Moments(input);
         return FromMoments(moments);
     }));
 }
Example #23
0
    /// <summary>
    /// Called each time the Vuforia state is updated
    /// Tracks the given color and sets the position and rotation of the spraycan
    /// </summary>
    void OnTrackablesUpdated()
    {
        if (mFormatRegistered)
        {
            if (mAccessCameraImage)
            {
                Vuforia.Image image = CameraDevice.Instance.GetCameraImage(mPixelFormat);   // get the current camera image in the given pixel format

                if (image != null)
                {
                #if UNITY_EDITOR
                    inputMat = new Mat(image.Height, image.Width, MatType.CV_8UC1, image.Pixels);
                #else
                    inputMat = new Mat(image.Height, image.Width, MatType.CV_8UC3, image.Pixels);   // store the image's pixels in an OpenCV mat
                #endif

                    Cv2.Resize(inputMat, smallMat, new Size(480, 270));                                                                       // resizing for performance reasons (keep aspect ratio!)
                    Cv2.GaussianBlur(smallMat, blurredMat, new Size(11, 11), 0);                                                              // blur image to reduce noise
                    Cv2.CvtColor(blurredMat, hsvMat, ColorConversionCodes.RGB2HSV);                                                           // convert to HSV colors
                    Cv2.InRange(hsvMat, lowerHSVColor, upperHSVColor, thresholdMat);                                                          // filter out all pixels matching the given HSV range

                    Cv2.Erode(thresholdMat, thresholdMat, Cv2.GetStructuringElement(MorphShapes.Ellipse, new Size(3, 3)), null, 2);           // shave off pixels from blobs to eliminate small blobs
                    Cv2.Dilate(thresholdMat, thresholdMat, Cv2.GetStructuringElement(MorphShapes.Ellipse, new Size(3, 3)), null, 2);          // strengthen the remaining blobs

                    Cv2.FindContours(thresholdMat, out contours, hierarchy, RetrievalModes.External, ContourApproximationModes.ApproxSimple); // detect the blobs and save them as contours

                    if (contours.Length > 0)
                    {
                        Mat contour = contours.Aggregate((i, j) => i.ContourArea() > j.ContourArea() ? i : j);  // find the blob with the biggest ContourArea/Size

                        Point2f point;
                        float   radius;
                        Cv2.MinEnclosingCircle(contour, out point, out radius); // get the radius for passing a final threshold

                        if (radius > 5)
                        {
                            Moments moments = Cv2.Moments(contour); // use moments to calculate the center point of the biggest blob
                            double  area    = moments.M00;
                            double  m01     = moments.M01;
                            double  m10     = moments.M10;

                            double posX = m10 / area;
                            double posY = m01 / area;

                            double rotX = MapValue(posX, 0, 480, -31.5, 31.5);  // map the values to match coordinates usable in Unity
                            double rotY = MapValue(posY, 0, 270, -19.75, 19.75);

                            posX = MapValue(posX, 0, 480, -6, 6);
                            posY = MapValue(posY, 0, 270, 3.5, -3.5);

                            this.transform.localPosition    = new Vector3((float)posX, (float)posY, 10); // apply the changes to position and rotation
                            this.transform.localEulerAngles = new Vector3((float)rotY, (float)rotX, 0);
                        }
                    }
                }
            }
        }
    }
Example #24
0
    public void Read(TProtocol iprot)
    {
        TField field;

        iprot.ReadStructBegin();
        while (true)
        {
            field = iprot.ReadFieldBegin();
            if (field.Type == TType.Stop)
            {
                break;
            }
            switch (field.ID)
            {
            case 1:
                if (field.Type == TType.String)
                {
                    Parent = iprot.ReadString();
                }
                else
                {
                    TProtocolUtil.Skip(iprot, field.Type);
                }
                break;

            case 2:
                if (field.Type == TType.String)
                {
                    Child = iprot.ReadString();
                }
                else
                {
                    TProtocolUtil.Skip(iprot, field.Type);
                }
                break;

            case 3:
                if (field.Type == TType.Struct)
                {
                    Duration_moments = new Moments();
                    Duration_moments.Read(iprot);
                }
                else
                {
                    TProtocolUtil.Skip(iprot, field.Type);
                }
                break;

            default:
                TProtocolUtil.Skip(iprot, field.Type);
                break;
            }
            iprot.ReadFieldEnd();
        }
        iprot.ReadStructEnd();
    }
Example #25
0
    void Update()
    {
        lowerHSV = new Hsv(lowerHue, lowerIntensity, lowerValue);
        upperHSV = new Hsv(upperHue, upperIntensity, upperValue);

        Mat image;

        image = capture.QueryFrame();
        Mat hsvImg = image.Clone();

        CvInvoke.CvtColor(image, hsvImg, ColorConversion.Bgr2Hsv);
        Image <Hsv, byte>  hsvConverted = hsvImg.ToImage <Hsv, byte>();
        Image <Gray, byte> hsvThreshold = hsvConverted.InRange(lowerHSV, upperHSV);

        Image <Gray, byte> eroded  = hsvThreshold.Clone();
        Image <Gray, byte> dilated = hsvThreshold.Clone();
        Mat structuringElement     = CvInvoke.GetStructuringElement(ElementShape.Cross, new Size(3, 3), new Point(-1, -1));

        CvInvoke.Erode(hsvThreshold, eroded, structuringElement, new Point(-1, -1), 2, BorderType.Constant, new MCvScalar(0));
        CvInvoke.Dilate(eroded, dilated, structuringElement, new Point(-1, -1), 2, BorderType.Constant, new MCvScalar(0));

        VectorOfVectorOfPoint contours       = new VectorOfVectorOfPoint();
        VectorOfPoint         biggestContour = new VectorOfPoint();
        int    biggestContourIndex           = -1;
        double biggestContourArea            = 0;
        Mat    hierarchy  = new Mat();
        Mat    contourImg = image.Clone();

        CvInvoke.FindContours(dilated, contours, hierarchy, RetrType.List, ChainApproxMethod.ChainApproxNone);

        for (int i = 0; i < contours.Size; i++)
        {
            if (CvInvoke.ContourArea(contours[i]) > biggestContourArea)
            {
                biggestContour      = contours[i];
                biggestContourIndex = i;
                biggestContourArea  = CvInvoke.ContourArea(contours[i]);
            }
        }

        CvInvoke.DrawContours(contourImg, contours, -1, new MCvScalar(0, 255, 0), 2);
        if (biggestContourIndex > -1)
        {
            CvInvoke.DrawContours(contourImg, contours, biggestContourIndex, new MCvScalar(0, 0, 255), 2);

            Moments moments  = CvInvoke.Moments(contours[biggestContourIndex]);
            Point   centroid = new Point((int)(moments.M10 / moments.M00), (int)(moments.M01 / moments.M00));
            CvInvoke.Circle(contourImg, centroid, 8, new MCvScalar(0, 0, 255), -1);
        }

        CvInvoke.Imshow("Original", image);
        CvInvoke.Imshow("Contour", contourImg);
        CvInvoke.Imshow("Seuillage", hsvThreshold);
        CvInvoke.Imshow("Ouverture", dilated);
        CvInvoke.WaitKey(24);
    }
        public IActionResult GetSearchResultsFilterTemp(STFilterRequestData _objReqData)
        {
            try
            {
                Cricket         objCS       = new Cricket();
                GetMatchDetails objMatchDet = new GetMatchDetails();
                EsClient_obj = oLayer.CreateConnection();
                ExtendedSearchResultFilterData _objSearchResults  = new ExtendedSearchResultFilterData();
                ExtendedSearchResultFilterData _objSearchResults2 = new ExtendedSearchResultFilterData();
                ExtendedSearchResultFilterData _objResult         = new ExtendedSearchResultFilterData();

                _objResult.ResultData               = new List <SearchResultFilterData>();
                _objSearchResults2.ResultData       = new List <SearchResultFilterData>();
                _objSearchResults.ResultData        = new List <SearchResultFilterData>();
                _objResult.Master                   = new MasterDatas();
                _objResult.Master.MasterData        = new Dictionary <string, object>();
                _objSearchResults.Master            = new MasterDatas();
                _objSearchResults.Master.MasterData = new Dictionary <string, object>();
                QueryContainer _objNestedQuery = new QueryContainer();
                if (_objReqData != null)
                {
                    MatchDetail    _objMatchDetail    = _objReqData.MatchDetail;
                    dynamic        _objS1Data         = _objReqData.S1Data;
                    MatchSituation _objMatchSituation = _objReqData.MatchSituation;
                    Moments        _objMomentsData    = _objReqData.Moments;
                    string         value     = sqObj.GetKeyValueForSport(sc.getType(_objMatchDetail.SportID), "DropdwonKey");
                    List <string>  valueObj  = sqObj.GetKeyValueForSportTemp(sc.getType(_objMatchDetail.SportID).ToLower(), "PlayerDetails");
                    string         SportName = sc.getType(_objMatchDetail.SportID);
                    if (_objS1Data != null)
                    {
                        _objNestedQuery   = objMatchDet.getDetailsAsPerSport(_objS1Data, _objNestedQuery, _objMatchDetail, _objMatchSituation, valueObj, _objMatchDetail.SportID);
                        _objSearchResults = objCf.searchStoryTeller(_objMatchDetail, _objNestedQuery, _objS1Data, _objResult.Master.MasterData, _objResult.ResultData, value, SportName.ToLower());
                    }
                    if (_objMomentsData != null)
                    {
                        QueryContainer objMoment = new QueryContainer();
                        objMoment = objCf.getMomentDetailsQueryST(_objMatchDetail, objMoment, _objMomentsData);
                        _objSearchResults2.ResultData = objCS.returnSportResult(EsClient_obj, objMoment, SportName);
                    }
                    _objResult.ResultData = _objSearchResults.ResultData.Union(_objSearchResults2.ResultData);
                    _objResult.Master     = _objSearchResults.Master;

                    if (_objMatchDetail.SportID == 1)
                    {
                        string[] _objReqInnings = _objMatchSituation.Innings.Contains(",") ? _objReqInnings = _objMatchSituation.Innings.Split(',') : _objReqInnings = new string[] { _objMatchSituation.Innings };
                        var      innings        = objCS.fetchDropDownForMatch(_objResult.Master.MasterData, _objReqInnings);
                        //_objResult.Master.MasterData.Add("Innings", innings);
                    }
                }
                return(Ok(new { responseText = _objResult }));
            }
            catch (Exception ex) {
                return(BadRequest());
            }
        }
Example #27
0
        /// <summary>
        /// この関数を実行すると,カメラから画像を取得し,グリッドマークを検出しその座標を返します.
        /// 実行時のレンズはx50対物であることを前提とします.
        /// </summary>
        /// <returns>グリッドマークを検出したピクセル座標。検出できなかった時は(-1,-1)が返される</returns>
        public Vector2 SearchGridMarkx50()
        {
            // レンズが50倍に設定されていない場合は例外を返すようにしたいがやり方が分からん(20140724)
            //if (parameterManager.Magnification != ParameterManager.) {
            //    throw new LensTypeException(ParameterManager.LensMagnificationOfGridMarkSearch);
            //}
            Camera c = Camera.GetInstance();

            byte[] b   = c.ArrayImage;
            Mat    mat = new Mat(440, 512, MatType.CV_8U, b);

            //mat.ImWrite(String.Format(@"c:\img\{0}_g.bmp", System.DateTime.Now.ToString("yyyyMMdd_HHmmss_fff")));
            Cv2.GaussianBlur(mat, mat, Cv.Size(5, 5), -1);
            Cv2.Threshold(mat, mat, 60, 255, ThresholdType.BinaryInv);
            //mat.ImWrite(String.Format(@"c:\img\{0}_t.bmp", System.DateTime.Now.ToString("yyyyMMdd_HHmmss_fff")));

            Moments mom = new Moments(mat);

            if (mom.M00 < 1000 * 255)
            {
                return(new Vector2(-1.0, -1.0));
            }

            double cx       = mom.M10 / mom.M00;
            double cy       = mom.M01 / mom.M00;
            Mat    innercir = Mat.Zeros(440, 512, MatType.CV_8UC1);

            Cv2.Circle(innercir, new Point(cx, cy), 30, new Scalar(255, 255, 255), 3);
            int innerpath = Cv2.CountNonZero(innercir);

            Cv2.BitwiseAnd(innercir, mat, innercir);
            int innersum = Cv2.CountNonZero(innercir);

            Mat outercir = Mat.Zeros(440, 512, MatType.CV_8UC1);

            Cv2.Circle(outercir, new Point(cx, cy), 200, new Scalar(255, 255, 255), 3);
            int outerpath = Cv2.CountNonZero(outercir);

            Cv2.BitwiseAnd(outercir, mat, outercir);
            int outersum = Cv2.CountNonZero(outercir);

            double innerratio = innersum * 1.0 / innerpath * 1.0;
            double outerratio = outersum * 1.0 / outerpath * 1.0;

            if (innerratio < 0.8)
            {
                return(new Vector2(-1.0, -1.0));
            }
            if (outerratio > 0.2)
            {
                return(new Vector2(-1.0, -1.0));
            }

            return(new Vector2(cx, cy));
        }
Example #28
0
        public Histogram Build(IReadOnlyList <double> values)
        {
            var    moments = Moments.Create(values);
            double binSize = GetOptimalBinSize(values.Count, moments.StandardDeviation);

            if (Math.Abs(binSize) < 1e-9)
            {
                binSize = 1;
            }
            return(Build(values, binSize));
        }
Example #29
0
        public static List <PadItem> GetPads(string GerberID, Image <Gray, byte> ImgGerber, Rectangle ROI)
        {
            List <PadItem> padItems = new List <PadItem>();

            ImgGerber.ROI = ROI;
            using (VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint())
            {
                CvInvoke.FindContours(ImgGerber, contours, null, Emgu.CV.CvEnum.RetrType.External, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
                for (int i = 0; i < contours.Size; i++)
                {
                    Moments mm = CvInvoke.Moments(contours[i]);
                    if (mm.M00 == 0)
                    {
                        continue;
                    }
                    Point     ctCnt = new Point(Convert.ToInt32(mm.M10 / mm.M00), Convert.ToInt32(mm.M01 / mm.M00));
                    Rectangle bound = CvInvoke.BoundingRectangle(contours[i]);
                    double    area  = CvInvoke.ContourArea(contours[i]);
                    PadItem   pad   = new PadItem();
                    pad.GerberID      = GerberID;
                    bound.X          += ROI.X;
                    bound.Y          += ROI.Y;
                    ctCnt.X          += ROI.X;
                    ctCnt.Y          += ROI.Y;
                    pad.Center        = ctCnt;
                    pad.Bouding       = bound;
                    pad.BoudingAdjust = bound;
                    Point[] cntPoint = contours[i].ToArray();
                    for (int k = 0; k < cntPoint.Length; k++)
                    {
                        cntPoint[k].X += ROI.X;
                        cntPoint[k].Y += ROI.Y;
                    }
                    pad.Contour       = cntPoint;
                    pad.ContourAdjust = new Point[cntPoint.Length];
                    for (int j = 0; j < cntPoint.Length; j++)
                    {
                        pad.ContourAdjust[j] = new Point(cntPoint[j].X, cntPoint[j].Y);
                    }
                    pad.Area         = area;
                    pad.AreaThresh   = new StandardThreshold(260, 60);
                    pad.ShiftXThresh = new StandardThreshold(370, 40);
                    pad.ShiftYThresh = new StandardThreshold(370, 40);
                    pad.FOVs         = new List <int>();
                    pad.CadFileID    = string.Empty;
                    pad.CadItemIndex = -1;
                    pad.NoID         = i;
                    pad.Enable       = true;
                    padItems.Add(pad);
                }
            }
            ImgGerber.ROI = Rectangle.Empty;
            return(padItems);
        }
Example #30
0
        public Point GravityCenter(Moments moments)
        {
            Point point = new Point();

            if (moments.M00 != 0)
            {
                point.X = (int)(moments.M10 / moments.M00);
                point.Y = (int)(moments.M01 / moments.M00);
            }
            return(point);
        }
 public void Read (TProtocol iprot)
 {
   TField field;
   iprot.ReadStructBegin();
   while (true)
   {
     field = iprot.ReadFieldBegin();
     if (field.Type == TType.Stop) { 
       break;
     }
     switch (field.ID)
     {
       case 1:
         if (field.Type == TType.String) {
           Parent = iprot.ReadString();
         } else { 
           TProtocolUtil.Skip(iprot, field.Type);
         }
         break;
       case 2:
         if (field.Type == TType.String) {
           Child = iprot.ReadString();
         } else { 
           TProtocolUtil.Skip(iprot, field.Type);
         }
         break;
       case 3:
         if (field.Type == TType.Struct) {
           Duration_moments = new Moments();
           Duration_moments.Read(iprot);
         } else { 
           TProtocolUtil.Skip(iprot, field.Type);
         }
         break;
       default: 
         TProtocolUtil.Skip(iprot, field.Type);
         break;
     }
     iprot.ReadFieldEnd();
   }
   iprot.ReadStructEnd();
 }