#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 :-)).
Как размножаться
- Создайте пустую форму проекта» Приложение Windows Forms » в Visual Studio. (Очевидно, что вы не используете .NET Framework…)
- Добавьте пакет 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>
- Добавьте кнопку и поле с
Form1
картинками в конструктор. - Скопируйте и вставьте код ниже в
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 Я думаю, что смогу заставить его работать. Мне просто нужно реализовать многопоточность. Спасибо вам за вашу помощь.