OpenCVSharp入门教程 基础篇③——从本地摄像头获取媒体流

一、界面布局

  • 两个Button
  • 一个PictureBox
  • 一个BackgroundWorker cameraWorker
    在这里插入图片描述

二、功能实现

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;
}

三、异常报错

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

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

因为还少了一点dll

四、运行

  • 堪称完美
    在这里插入图片描述

五、Demo源码

OpenCVSharpDemo工程源码点击下载

觉得好,就一键三连呗(点赞+收藏+关注)

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
esp32-c3入门教程 环境篇③——vs code ide快速入门是关于如何使用VS Code IDE进行ESP32-C3开发的教程。VS Code是一种功能强大且行的集成开发环境,它提供了许多便捷工具和插件来简化代码编写和调试的过程。 首先,我们需要在电脑上安装VS Code。你可以从官方网站上下载并安装VS Code。 安装完成后,打开VS Code并点击"Extensions"图标,搜索并安装ESP-IDF插件。这个插件是为了和ESP32-C3开发框架进行集成而开发的。 接下来,我们需要配置ESP-IDF插件。首先,点击左侧的扩展图标,找到ESP-IDF插件并点击设置图标。然后,找到"espidf.espIdfPath"选项,将其设置为你的ESP-IDF框架的路径。 现在,我们可以开始创建一个新的ESP32-C3项目。点击"File"菜单,选择"New File",然后输入项目的名称。然后,点击"File"菜单中的"Save"来保存项目文件。 接下来,打开终端窗口,点击"Terminal"菜单,选择"New Terminal"。在终端中,输入以下命令来初始化ESP-IDF环境: idf.py set-target esp32c3 idf.py menuconfig 这将打开ESP-IDF的配置菜单,在这里你可以配置各种参数和选项。 配置完成后,我们可以开始编写和调试代码了。在VS Code中,点击左侧的扩展图标,找到ESP-IDF插件并点击设置图标。然后,点击"Build"按钮来构建项目。 构建完成后,我们可以使用VS Code的调试功能来调试代码。点击左侧的调试图标,然后点击"Add Configuration"按钮来添加一个调试配置。然后,点击"Debug"按钮来启动调试模式。 总之,使用VS Code IDE进行ESP32-C3开发是非常方便和高效的。它提供了许多工具和插件来简化开发程,并提供了强大的调试功能来帮助我们调试代码。希望这个快速入门教程对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小康师兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值