使用 c# 和 .net5 从网络摄像头捕获图像
capture images from webcam using c# with .net5
我正在尝试在我的 .net5 项目上制作一个简单的表单来从网络摄像头捕获图像,但是我似乎无法为此找到一个简单的解决方案。我尝试了 AForge、OpenCVSharp.. 它们不支持 .net5,但我得到了一个 运行 的项目,但结果只是空白(没有网络摄像头图像)。我 google 搜索并尝试了几乎所有我能找到的东西。
我想知道是否有人对解决此问题有任何建议,更喜欢开源组件
edit1:我在桌面应用程序中使用 Winforms。
OpenCvSharp4
支持 .NET5(以及 .NET6 预览版:-))。
如何重现
创建一个空的“Windows Forms App”项目表单 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;
}
}
}
}
就这些了。
我正在尝试在我的 .net5 项目上制作一个简单的表单来从网络摄像头捕获图像,但是我似乎无法为此找到一个简单的解决方案。我尝试了 AForge、OpenCVSharp.. 它们不支持 .net5,但我得到了一个 运行 的项目,但结果只是空白(没有网络摄像头图像)。我 google 搜索并尝试了几乎所有我能找到的东西。
我想知道是否有人对解决此问题有任何建议,更喜欢开源组件
edit1:我在桌面应用程序中使用 Winforms。
OpenCvSharp4
支持 .NET5(以及 .NET6 预览版:-))。
如何重现
创建一个空的“Windows Forms App”项目表单 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;
}
}
}
}
就这些了。