Как получить путь к изображению, который захватывает веб-камера - PullRequest
0 голосов
/ 12 февраля 2019

В моем виде.У меня есть два Picturebox и кнопка, которая захватывает изображение в Picturebox.

Два Picturebox

  • WebcamImage - представляет изображение с камеры в реальном времени
  • PreviewImage - представляет захваченное изображениеиз webcamimage

Когда я сохраняю это захваченное изображение, оно попадает в мое окно с изображением UserImage (в моем пользовательском контроле)

Проблема в том, что я не знаю, как получитьПуть к изображению в картинках.
Когда я нажимаю на свою сохраненную кнопку, путь к изображению будет сохранен в тексте моей метки.

Вот мой код

PS: я использую Aforge.dll

public partial class CaptureImage : Form
{
    private FilterInfoCollection CaptureDevice;
    private VideoCaptureDevice FinalFrame;
    RegisterCustomer _view;
    public CaptureImage(RegisterCustomer view)
    {
        InitializeComponent();
        this._view = view;
    }
    private void CaptureImage_Load(object sender, EventArgs e)
    {
        CaptureDevice = new FilterInfoCollection(FilterCategory.VideoInputDevice);
        foreach (FilterInfo Device in CaptureDevice)
        {
            comboBox1.Items.Add(Device.Name);
        }
        comboBox1.SelectedIndex = 0;
        FinalFrame = new VideoCaptureDevice();
        FinalFrame = new VideoCaptureDevice(CaptureDevice[comboBox1.SelectedIndex].MonikerString);
        if (FinalFrame.VideoCapabilities.Length > 0)
        {
            string highestSolution = "0;0";
            //Search for the highest resolution
            for (int i = 0; i < FinalFrame.VideoCapabilities.Length; i++)
            {
                if (FinalFrame.VideoCapabilities[i].FrameSize.Width > Convert.ToInt32(highestSolution.Split(';')[0]))
                    highestSolution = FinalFrame.VideoCapabilities[i].FrameSize.Width.ToString() + ";" + i.ToString();
            }
        }
        FinalFrame.NewFrame += new NewFrameEventHandler(FinalFrame_NewFrame);
        FinalFrame.Start();
        btn_save.Hide();
        btn_cancel.Hide();
    }
    void FinalFrame_NewFrame(object sender, NewFrameEventArgs eventArgs)
    {
        WebcamImage.Image = (Bitmap)eventArgs.Frame.Clone();
    }
    private void CaptureImage_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (FinalFrame.IsRunning == true)
        {
            FinalFrame.Stop();
        }
    }
    private void btn_save_Click(object sender, EventArgs e)
    {
        _view.UserImage.Image = PreviewImage.Image;
        this.Close();
    }
    private void btn_cancel_Click(object sender, EventArgs e)
    {
        this.Close();
    }
    private void btn_capture_Click(object sender, EventArgs e)
    {         
        PreviewImage.Image = (Bitmap)WebcamImage.Image.Clone();
        PreviewImage.BringToFront();          
        btn_capture.Hide();
        btn_save.Show();
        btn_cancel.Show();
    }
}

Это я знаю только при получении пути к изображению с помощью диалогового окна openfile

using (OpenFileDialog ofd = new OpenFileDialog())
        {
            ofd.Filter = "Image Files (*.jpg;*.jpeg;.*.png; | *.jpg;*.jpeg;.*.png;)";
            ofd.FilterIndex = 1;
            ofd.Multiselect = false;
            ofd.Title = "Select Image File";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                location = ofd.FileName;
                path.Text = location;
                UserImage.Image = Image.FromFile(location);
                UserImage.SizeMode = PictureBoxSizeMode.StretchImage;             
            }
        }
...