C# winform项目使用OpenCv调用电脑本机摄像头

配置

新建一个winform项目
打开nuget管理面板
在这里插入图片描述

在浏览中搜索opencvsharp
在这里插入图片描述
勾选本解决方案然后安装即可
在这里插入图片描述
在窗口中添加一个按钮 和 一个pictureBox控件
在这里插入图片描述
安装完成后 添加这四个命名空间

using OpenCvSharp;
using OpenCvSharp.Blob;
using OpenCvSharp.Extensions;
using OpenCvSharp.UserInterface;

然后 按钮添加一个 click事件
在事件中添加下列代码

			var capture = new VideoCapture(0);

            //此处参考网上的读取方法
            int sleepTime = (int)Math.Round(1000 / capture.Fps);
            // 声明实例 Mat类
            Mat image = new Mat();

            // 进入读取视频每镇的循环
            while (true)
            {
                capture.Read(image);
                //判断是否还有没有视频图像 
                if (image.Empty())
                    break;
                // 在picturebox中播放视频, 需要先转换成bitmap格式
                pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(image);
                Cv2.WaitKey(sleepTime);
            }

点击运行
效果如下
在这里插入图片描述

  • 10
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
C#使用OpenCV打开摄像头,并在Windows窗体应用程序中展示摄像头的视频流,可以使用以下代码: 1. 引用OpenCV库,将其添加到项目引用中。 2. 在代码中创建一个`VideoCapture`对象,并指定摄像头的索引号。例如,打开默认的摄像头: ``` VideoCapture videoCapture = new VideoCapture(0); ``` 或者,指定摄像头的索引号: ``` VideoCapture videoCapture = new VideoCapture(1); ``` 3. 创建一个`PictureBox`控件,用于显示摄像头的视频流。 ``` PictureBox pictureBox = new PictureBox(); this.Controls.Add(pictureBox); ``` 4. 在每个循环迭代中,使用`VideoCapture`对象的方法获取视频帧,并将其转换为`Bitmap`对象。然后,将`Bitmap`对象显示在`PictureBox`控件中。 ``` Mat frame = new Mat(); videoCapture.Read(frame); Bitmap bitmap = new Bitmap(frame.Bitmap); pictureBox.Image = bitmap; ``` 5. 在处理完所有帧后,释放`VideoCapture`对象: ``` videoCapture.Dispose(); ``` 完整的示例代码如下: ``` VideoCapture videoCapture = new VideoCapture(0); PictureBox pictureBox = new PictureBox(); this.Controls.Add(pictureBox); while (true) { Mat frame = new Mat(); videoCapture.Read(frame); Bitmap bitmap = new Bitmap(frame.Bitmap); pictureBox.Image = bitmap; } videoCapture.Dispose(); ``` 在上面的代码中,我们使用`VideoCapture`类打开默认的摄像头,并创建一个`PictureBox`控件,用于显示摄像头的视频流。在每个循环迭代中,我们使用`Read`方法获取视频帧,并将其转换为`Bitmap`对象。由于`Bitmap`对象是.NET的图像对象,因此在将`Mat`对象转换为`Bitmap`对象时,会涉及到图像数据的复制和格式转换,可能会影响性能。最后,我们将`Bitmap`对象赋值给`PictureBox`控件的`Image`属性。 需要注意的是,在Windows窗体应用程序中,更新UI控件的操作必须在主线程中进行,否则会抛出异常。如果需要在其他线程中更新UI控件,可以使用`Invoke`方法或`BeginInvoke`方法来实现。 希望我的回答能够帮到您。如果您还有其他问题,请随时提出。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值