USB Cam Feed не отображается в Picturebox с помощью C # и Aforge - PullRequest
0 голосов
/ 12 мая 2018

У меня есть проект C # Winforms, в котором мне нужно захватить изображение с внешней веб-камеры (Logitech HD Pro C920). Я использую медиатеку Aforge. Появится список устройств видеовхода, подключится внутренняя веб-камера ноутбука, и поток будет отображаться в окне ввода изображений.

Однако поток с USB-камеры не отображается в окне ввода изображений, даже если он указан в качестве устройства ввода видео. Соответствующий код показан ниже:

cam = new VideoCaptureDevice(webcam[cbCameras.SelectedIndex].MonikerString);
cam.NewFrame +=new NewFrameEventHandler(cam_NewFrame);
cam.Start();

void cam_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
    Bitmap bit = (Bitmap)eventArgs.Frame.Clone();
    picPhoto.Image = bit;
}

Где мне это не хватает? Спасибо

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

Наконец я нашел решение, изменив способ выбора веб-камеры.Теперь я выбрал форму, предоставленную AForge (VideoCaptureDeviceForm).

Вот код:

private void BtnCamSelection_Click(object sender, RoutedEventArgs e)
{
    VideoCaptureDeviceForm form = new VideoCaptureDeviceForm();
    if(form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        this.pVideoSource = form.VideoDevice;

    }

}

Затем я загрузил aforge:VideoSourcePlayer с переменной pVideoSource.

0 голосов
/ 12 июля 2019

Попробуйте это:

public VideoCapabilities[] videoCapabilities;
videoCapabilities = Cam.VideoCapabilities;
Cam.VideoResolution = videoCapabilities[0];
0 голосов
/ 12 мая 2018

Из вопроса, заданного здесь ранее Как инициализировать веб-камеру AForge

public Form1() // init
{
    InitializeComponent();
    {
        VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
        foreach (FilterInfo VideoCaptureDevice in VideoCaptureDevices)
        {
            comboBox1.Items.Add(VideoCaptureDevice.Name);
        }
        comboBox1.SelectedIndex = 0;
    }
}

private void button1_Click(object sender, EventArgs e)
{
    FinalVideo = new VideoCaptureDevice(VideoCaptureDevices[comboBox1.SelectedIndex].MonikerString);
    FinalVideo.NewFrame += new NewFrameEventHandler(FinalVideo_NewFrame);
    FinalVideo.Start();
}

void FinalVideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
    Bitmap video = (Bitmap)eventArgs.Frame.Clone();
    pictureBox1.Image = video;

}

private void button2_Click(object sender, EventArgs e)
{
    FinalVideo.Stop();
}
}
...