public extern static E_iVision_ERRORS iGetNCCMatchResults(IntPtr model, int index, ref iNCCFound data);
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(); } }