我正在开发一个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/ –