我正在开发一个 Winform 应用程序,c#
用于拥有我们可以在购物中心看到的照片亭之类的东西。
我设法找到了从网络摄像头捕获图像并使用 easywebcam 组件存储捕获的图像的方法。但是,我想在网络摄像头流媒体视频周围有一个相框,因此当捕获图像时,相框也包括在内。
我已经做了几天的研究,但仍然对此一无所知。任何大师都可以为此启发我吗?
感谢您的回复,我用您提到的 _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;
}
它就像一个魅力,非常感谢你!
我使用 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();