如何使用C#中的Aforge.Net库镜像捕获网络摄像头

时间:2015-09-08 10:42:59

标签: c# image aforge mirror

我正在使用 AForge.NET 库(http://www.aforgenet.com)从我的网络摄像头捕获图像,将其显示在图片框中然后保存。但是捕获不像镜子。有人知道如何在c#中镜像捕获吗?

 public static Bitmap _latestFrame;

private FilterInfoCollection webcam;
private VideoCaptureDevice cam;
Bitmap bitmap;

private int orderidcapture = 0;

private string date1 = "";


private void Frm_Capturet_Load(object sender, EventArgs e)
{


    try
    {
        piclocation = new Ini(Application.StartupPath + "\\UserSetting.ini").GetValue("Webservice",
                                 "DigitalSign").ToString();


        webcam = new FilterInfoCollection(FilterCategory.VideoInputDevice);
        foreach (FilterInfo VideoCaptureDevice in webcam)
        {
            comboBox1.Items.Add(VideoCaptureDevice.Name);

        }
        comboBox1.SelectedIndex = 0;

    }
    catch (Exception error)
    {

        MessageBox.Show(error.Message + "error11");
    }
    Focus();





}
private string piclocation = "";

void cam_NewFrame(object sender, NewFrameEventArgs eventArgs)
{

        bitmap = (Bitmap)eventArgs.Frame.Clone();

        picFrame.Image = bitmap;

}
private void button1_Click(object sender, EventArgs e)
{

    cam = new VideoCaptureDevice(webcam[comboBox1.SelectedIndex].MonikerString);
    cam.NewFrame += new NewFrameEventHandler(cam_NewFrame);
    cam.DisplayPropertyPage(new IntPtr(0));
    cam.Start();

}


private void button2_Click(object sender, EventArgs e)
{


    date1 = date1.Replace("/", "");

    Bitmap current = (Bitmap)bitmap.Clone();
    string filepath = Environment.CurrentDirectory;
    string fileName = System.IO.Path.Combine(piclocation, orderidcapture + "__" + date1 + @"name.jpg");
    current.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
    current.Dispose();
    current = null;

}

1 个答案:

答案 0 :(得分:1)

我自己解决了这个问题。

  void cam_NewFrame(object sender, NewFrameEventArgs eventArgs)
    {
        try
        {
            bitmap = (Bitmap)eventArgs.Frame.Clone();

            ///add these two lines to mirror the image
            var filter = new Mirror(false, true);
            filter.ApplyInPlace(bitmap);

            ///

            picFrame.Image = bitmap;
        }
        catch
        {


        }

    }