我正在開發一個Winform應用程序,使用c#
有像我們可以在商場看到的照片亭。C#攝像頭在網絡攝像頭winform
我設法找到方法從網絡攝像頭捕獲圖像,並使用easywebcam組件存儲捕獲的圖像。但是,我想在網絡攝像頭流式視頻周圍放置一個相框,因此在捕獲圖像時,相框也會包含在內。
我已經做了幾天的研究,但仍然無法得到任何想法。任何古魯都能爲我啓發我嗎?
我正在開發一個Winform應用程序,使用c#
有像我們可以在商場看到的照片亭。C#攝像頭在網絡攝像頭winform
我設法找到方法從網絡攝像頭捕獲圖像,並使用easywebcam組件存儲捕獲的圖像。但是,我想在網絡攝像頭流式視頻周圍放置一個相框,因此在捕獲圖像時,相框也會包含在內。
我已經做了幾天的研究,但仍然無法得到任何想法。任何古魯都能爲我啓發我嗎?
我已經使用AForge庫來處理來自C#的網絡攝像頭,我很喜歡它是如何幹淨的API。 這裏的樣本如何時間戳添加到視頻,拍攝快照等: http://www.aforgenet.com/framework/samples/video.html
如果我理解正確的話,你需要有原始幀拍攝快照時,讓你的無框畫之前做的一個副本:
Image lastUneditedFrame;
private void VideoSourcePlayer_NewFrame(object sender, ref Bitmap image)
{
if (lastUneditedFrame != null)
{
lastUneditedFrame.Dispose();
}
lastUneditedFrame = image.Clone(new Rectangle(0, 0, image.Width, image.Height), image.PixelFormat);
var graphics = Graphics.FromImage(image);
// do the drawing of photo frame
graphics.Dispose();
}
// on snapshot button click, simply call lastUneditedFrame.Save();
感謝您的回覆,我跟你提到並添加如下覆蓋方法_NewFrame事件進行了測試:
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap img = (Bitmap)eventArgs.Frame.Clone();
// Perform Overlay here
Graphics camImg = Graphics.FromImage(img);
Bitmap frame = new Bitmap(@"D:\PriusC1.png");
camImg.DrawImage(frame, new Point(100, 100));
camImg.Save();
pictureBox1.Image = img;
}
和它的工作就像一個魅力,謝謝版本很多!
just make確保你正在處理所有的事情,圖形,位圖對象是一次性的,應該處理以避免內存泄漏。 – Giedrius
嗨Giedrius,感謝您的信息,我之前閱讀過AForge.NET,但我對攝像頭上的相框沒有任何想法。 –
如果我正確理解這個問題,我已經用示例代碼更新了我的答案,看起來像是在AForge中看起來如何。 – Giedrius
嗨Giedrius,好吧,我還沒有嘗試過AForge,但我想在網絡攝像頭的實況流頂部顯示一個相框/模板/背景圖像,就像分層。上述框架是這樣的:http://www.loonapix.com/framer/ –