захват изображений с веб-камеры с помощью c# с .net5

#c# #webcam #.net-5

Вопрос:

Я пытаюсь создать простую форму для захвата изображений с веб-камеры в своем проекте .net5, однако, похоже, я не смог найти простого решения для этого. Я пытаюсь использовать AForge, OpenCvSharp.. они не поддерживают .net5, но мне еще нужно запустить проект, но он оказывается пустым (без изображения веб-камеры). Я ищу в Google и пробую почти все, что могу найти со своей стороны.

Мне интересно, есть ли у кого-нибудь какие-либо предложения по решению этой проблемы с компонентами с открытым исходным кодом

edit1: Я использую Winforms для настольных приложений.

Комментарии:

1. Является ли ваш проект веб-приложением, настольным приложением, консольным приложением и т. Д.?

2. я использую winforms

3. Могу я спросить, есть ли какая-то особая причина, по которой вы должны использовать .NET 5?

4. Основная причина, по которой я могу позже перейти на .net6, заключается в том, что, если я работаю над .net framework, он просто застрял здесь на уровне 4.8. Я считаю, что проще перейти на несколько платформ.

Ответ №1:

OpenCvSharp4 поддерживает .NET5 (а также предварительный просмотр .NET6 :-)).

Как размножаться

  1. Создайте пустую форму проекта» Приложение Windows Forms » в Visual Studio. (Очевидно, что вы не используете .NET Framework…)
  2. Добавьте пакет nuget OpenCvSharp4.Windows . Ниже моего файла csproj.
 <Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows7.0</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="OpenCvSharp4.Windows" Version="4.5.3.20210817" />
  </ItemGroup>

</Project>
 
  1. Добавьте кнопку и поле с Form1 картинками в конструктор.
  2. Скопируйте и вставьте код ниже в Form1.cs .
 using OpenCvSharp;
using OpenCvSharp.Extensions;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WebCam
{
    public partial class Form1 : Form
    {
        VideoCapture capture;
        Mat frame;
        Bitmap image;

        public Form1()
        {
            InitializeComponent();

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

        private void button1_Click(object sender, EventArgs e)
        {

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

 

Это все.

Комментарии:

1. я сделал, и ничего не произошло.. скриншот .. я не уверен, как разместить изображение здесь, как вы, впервые используя это .. если вы можете опубликовать свой проект на GitHub, я могу вытащить и проверить, является ли проблема с моим компьютером или моим кодом ..

2. Это всего лишь 2 маленьких файла, я добавил простое «Как» в свой ответ.

3. я получил 1 кадр из этого кода, по какой-то причине он еще не пригоден для использования, это близко ко всему, что я могу получить на этом.net5 Я думаю, что смогу заставить его работать. Мне просто нужно реализовать многопоточность. Спасибо вам за вашу помощь.