private void tmrRefrashFrame_Tick(object sender, EventArgs e) { try { this.tmrRefrashFrame.Stop(); ImageSize(); SendMessage(m_CapHwnd, WM_CAP_GT_FRAME, 0, 0); SendMessage(m_CapHwnd, WM_CAP_COPY, 0, 0); OpenClipboard(m_CapHwnd); IntPtr img = GetClipboardData(2); CloseClipboard(); //System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(m_Width, m_Height); //using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp)) //{ // g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed; // g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Low; // g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed; // g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed; // g.DrawImage(Image.FromHbitmap(img), 0, 0, m_Width, m_Height); //} //ImgWebCam.Image = bmp; IDataObject tempObj = Clipboard.GetDataObject(); Image tempImg = (System.Drawing.Bitmap)tempObj.GetData(DataFormats.Bitmap); ImgWebCam.Image = tempImg; ImgWebCam.Refresh(); Application.DoEvents(); if (!bStopped) { this.tmrRefrashFrame.Start(); } else { string sysDir = ""; sysDir = AppDomain.CurrentDomain.BaseDirectory; tempImg.Save(sysDir + "\\image\\pigeonimage.png", ImageFormat.Png); this.tmrRefrashFrame.Start(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void tmrRefrashFrame_Tick(object sender, EventArgs e) { try { this.tmrRefrashFrame.Stop(); ImageSize(); SendMessage(m_CapHwnd, WM_CAP_GT_FRAME, 0, 0); SendMessage(m_CapHwnd, WM_CAP_COPY, 0, 0); OpenClipboard(m_CapHwnd); IntPtr img = GetClipboardData(2); CloseClipboard(); //System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(m_Width, m_Height); //using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp)) //{ // g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed; // g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Low; // g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed; // g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed; // g.DrawImage(Image.FromHbitmap(img), 0, 0, m_Width, m_Height); //} //ImgWebCam.Image = bmp; IDataObject tempObj = Clipboard.GetDataObject(); Image tempImg = (System.Drawing.Bitmap)tempObj.GetData(DataFormats.Bitmap); ImgWebCam.Image = tempImg; using (Emgu.CV.Image <Bgr, byte> orignalFrame = new Image <Bgr, byte>((Bitmap)ImgWebCam.Image)) { //convert image into gray Image <Bgr, byte> image = orignalFrame.Resize(ImgWebCam.Size.Width, ImgWebCam.Size.Height, 0); Image <Gray, byte> frame = image.Convert <Gray, byte>(); //Perform absdiff only if it's the second frame else store it in the global first frame if (this.previousFrame != null) { //convert the previous frame to gray Image <Gray, byte> previousFrameGray = previousFrame.Convert <Gray, byte>(); previousFrameGray = previousFrameGray.Resize(ImgWebCam.Size.Width, ImgWebCam.Size.Height, 0); Image <Gray, byte> BgDifference = new Image <Gray, byte>(ImgWebCam.Width, ImgWebCam.Height); CvInvoke.AbsDiff(previousFrameGray, frame, BgDifference); //assign the current frame to previousFrame this.previousFrame = new Image <Bgr, byte>((Bitmap)ImgWebCam.Image); ImgWebCam.Image = BgDifference.ToBitmap(); //ImgWebCam.Image = image.ToBitmap(); } else { this.previousFrame = new Image <Bgr, byte>((Bitmap)ImgWebCam.Image); this.previousFrame = this.previousFrame.Resize(ImgWebCam.Size.Width, ImgWebCam.Size.Height, 0); } } ImgWebCam.Refresh(); Application.DoEvents(); if (!bStopped) { this.tmrRefrashFrame.Start(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }