Вводное руководство по OpenCVSharp. Основы ③ — получение медиапотока с локальной камеры

OpenCV

1. Внешний вид интерфейса

  • дваButton
  • ОдинPictureBox
  • ОдинBackgroundWorker cameraWorker

在这里插入图片描述

2. Реализация функции

2.1 Откройте камеру

  • Включи камеру
  • Определить, включена ли камера, нет: подсказка и выход
  • Фоновые задачи камерыcameraWorkerначать работу
private void openCameraBtn_Click(object sender, EventArgs e)
{
    if (cameraWorker.IsBusy)
    {
        closeCamera();
    }
    else
    {
        openCamera();
    }
}

private void openCamera()
{
    capture.Open(0, VideoCaptureAPIs.ANY);
    if (!capture.IsOpened())
    {
        Close();
        MessageBox.Show("打开摄像头失败");
        return;
    }
    openCameraBtn.Text = "关闭摄像头";
    cameraWorker.RunWorkerAsync();
}

private void closeCamera()
{
    openCameraBtn.Text = "打开摄像头";
    cameraWorker.CancelAsync();
    capture.Release();
    pictureBox1.Image = null;
}

2.2 Запуск фоновых задач камеры

  • whileбесконечный цикл
  • получить веб-камеруframeMat
  • преобразовать вBitmap
  • скопировать вpictureBox1
private void cameraWorker_DoWork(object sender, DoWorkEventArgs e)
{
    var bgWorker = (BackgroundWorker)sender;

    while (!bgWorker.CancellationPending)
    {
        using (var frameMat = capture.RetrieveMat())
        {
            var frameBitmap = BitmapConverter.ToBitmap(frameMat);
            bgWorker.ReportProgress(0, frameBitmap);
        }
        Thread.Sleep(100);
    }
}

private void cameraWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    var frameBitmap = (Bitmap)e.UserState;
    pictureBox1.Image?.Dispose();
    pictureBox1.Image = frameBitmap;
}

3. Отчет об исключениях

System.TypeInitializationException:““OpenCvSharp.Internal.NativeMethods”的类型初始值设定项引发异常。”

内部异常
DllNotFoundException: 无法加载 DLL“OpenCvSharpExtern”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

Потому что dll чуть меньше

在这里插入图片描述

4. Операция

  • идеально

在这里插入图片描述

Пять, исходный код демо

Исходный код проекта OpenCVSharpDemo нажмите, чтобы загрузить

Если вы считаете, что это хорошо, просто нажмите три раза (Нравится + Избранное + Подписаться)