Exemple #1
0
 public extern static E_iVision_ERRORS iGetNCCMatchResults(IntPtr model, int index, ref iNCCFound data);
Exemple #2
0
        private async void ReadAllFrames()
        {
            Mat m = new Mat();

            while (IsReadingFrame == true && FrameNo < TotalFrame)
            {
                FrameNo += Convert.ToInt16(numericUpDown1.Value);
                capture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.PosFrames, FrameNo);
                capture.Read(m);
                CvInvoke.CvtColor(m, _grayFrame, ColorConversion.Bgr2Gray);
                //GrayScale(m.ToImage<Bgr, byte>(), out Image<Gray, byte> grayImage);
                // var bm = Emgu.CV.BitmapExtension.ToBitmap(m);
                CurrentImg = _grayFrame.ToImage <Gray, byte>();
                // var bm = grayImage.ToBitmap();
                //byte* ptr = (byte*)grayImg.MIplImage.ImageData;


                TransformFromImgCVToGrayImage(CurrentImg);


                m_Drawimg = System.Drawing.Image.FromHbitmap(iImage.GetBitmapAddress(GrayImg));

                if (m_bRTMatch)
                {
                    m_Drawbmp = new Bitmap(CurrentImg.Width, CurrentImg.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
                    m_Drawg   = Graphics.FromImage(m_Drawbmp);
                    m_Drawg.DrawImage(m_Drawimg, 0, 0, CurrentImg.Width, CurrentImg.Height);

                    E_iVision_ERRORS err;
                    int       objnum  = 0;
                    iNCCFound objdata = new iNCCFound();
                    ResultPoint = new iDPoint();
                    iDPoint[] RegPoint = new iDPoint[4];
                    double[]  Fang     = new double[4];
                    int       i;

                    if (m_bColorSensor)
                    {
                        err = iMatch.MatchNCCModel(ColorImg, Matchmodel);
                    }
                    else
                    {
                        err = iMatch.MatchNCCModel(GrayImg, Matchmodel);
                    }

                    if (err != E_iVision_ERRORS.E_OK)
                    {
                        m_bRTMatch = false;
                    }

                    iMatch.iGetNCCMatchNum(Matchmodel, ref objnum);

                    for (i = 0; i < objnum; i++)
                    {
                        iMatch.iGetNCCMatchResults(Matchmodel, i, ref objdata);

                        ResultPoint.x = objdata.cp.x;
                        ResultPoint.y = objdata.cp.y;

                        SetTextCoordinates(textBox1, objdata.cp.x.ToString("0.00"));
                        SetTextCoordinates(textBox2, objdata.cp.y.ToString("0.00"));
                        SetTextCoordinates(textBox3, objdata.angle.ToString("0.00"));

                        m_Drawg.DrawString("score:" + objdata.score.ToString("0.00"), drawfont, drawbrush, Convert.ToInt32(ResultPoint.x - 50), Convert.ToInt32(ResultPoint.y - 60));
                        m_Drawg.DrawString("angle:" + objdata.angle.ToString("0.00"), drawfont, drawbrush, Convert.ToInt32(ResultPoint.x - 50), Convert.ToInt32(ResultPoint.y - 40));
                        m_Drawg.DrawString("scale:" + objdata.scale.ToString("0.00"), drawfont, drawbrush, Convert.ToInt32(ResultPoint.x - 50), Convert.ToInt32(ResultPoint.y - 20));
                    }


                    iMatch.iDrawiMatchResults(Matchmodel, m_Drawg.GetHdc(), 1);
                    RefreshPictureImage(m_Drawbmp);
                    m_Drawg.Dispose();
                }
                else
                {
                    RefreshPicturePtr(iImage.GetBitmapAddress(GrayImg));
                    await Task.Delay(1000 / Convert.ToInt16(30));

                    label1.Text = FrameNo.ToString() + "/" + TotalFrame.ToString();
                }

                await Task.Delay(1000 / Convert.ToInt16(30));

                label1.Text = FrameNo.ToString() + "/" + TotalFrame.ToString();

                pixelSpeedX    = ResultPoint.x - lastPositionX;
                pixelSpeedY    = ResultPoint.y - lastPositionY;
                TBXSPEEDX.Text = pixelSpeedX.ToString("F2");
                TBSSPEEDY.Text = pixelSpeedY.ToString("F2");
                lastPositionX  = (int)ResultPoint.x;
                lastPositionY  = (int)ResultPoint.y;
                //DrawScale = (double)Convert.ToDouble(txb.Text);
                ///DrawScaledImage(bm, (float)DrawScale, out Bitmap l_Bitmap);

                //pictureBox1.Image = l_Bitmap;

                /*
                 * pictureBox1.Image = _grayFrame.ToBitmap();
                 * await Task.Delay(1000 / Convert.ToInt16(30));
                 * label1.Text = FrameNo.ToString() + "/" + TotalFrame.ToString();
                 */
                // bm.Dispose();
                //l_Bitmap.Dispose();
            }
        }