我正在使用c#
开发一个Winform应用程序,以便在购物中心看到像照片亭这样的东西。
我设法找到了从网络摄像头捕获图像的方法,并使用easywebcam组件存储捕获的图像。但是,我希望在网络摄像头流视频周围有一个相框,因此在拍摄图像时,相框也包含在内。
我已经做了好几天的研究,但仍然无法对此有所了解。任何宗师都可以为此启发我吗?
答案 0 :(得分:0)
我已经使用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();
答案 1 :(得分:0)
感谢您的回复,我使用您提到的_NewFrame事件对其进行了测试,并在overlay方法中添加如下:
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;
}
它就像一个魅力,非常感谢你!