Простой захват камеры в Winforms - PullRequest
0 голосов
/ 12 июня 2018

Я просто хочу просмотреть, а затем сделать снимок с камеры устройства (веб-камеры) в приложении WinForms C #.

Я использовал это: WebEye WebCameraControl , но на некоторых машинах / камерах, похоже, он не работает.Описание подразумевает, что есть еще много чего, но я не могу найти ни одного на NuGet, которые предназначены для WinForms.

Есть какие-нибудь рекомендации?Мне кажется, что я упускаю что-то очевидное, например, встроенный элемент управления Windows, который просто сделает это!


Редактировать:
При попытке добавить OpenCVSharp вот что я получаю: enter image description here

1 Ответ

0 голосов
/ 12 июня 2018

Попробуйте OpenCVSharp .Небольшой фрагмент кода с PictureBox и кнопкой:

VideoCapture capture;
Mat frame;
Bitmap image;
private Thread camera;
bool isCameraRunning = 0;

private void CaptureCamera() {
    camera = new Thread(new ThreadStart(CaptureCameraCallback));
    camera.Start();
}

private void CaptureCameraCallback() {

    frame = new Mat();
    capture = new VideoCapture(0);
    capture.Open(0);

    if (capture.IsOpened()) {
        while (isCameraRunning) {

            capture.Read(frame);
            image = BitmapConverter.ToBitmap(frame);
            if (pictureBox1.Image != null) {
                pictureBox1.Image.Dispose();
            }
            pictureBox1.Image = image;
        }
    }
}

private void button1_Click(object sender, EventArgs e) {
    if (button1.Text.Equals("Start")) {
        CaptureCamera();
        button1.Text = "Stop";
        isCameraRunning = true;
    }
    else {
        capture.Release();
        button1.Text = "Start";
        isCameraRunning = false;
    }
}
...