C# CSharp winform 使用openCvSharp 3 访问笔记本电脑自带的摄像头解决办法

由于疫情原因,放假在家没事做,故学了两个周C#,突然想试一下读取电脑摄像头网上找了一些方法,比如openCV,openCVsharp,后来选用了OpenCvSharp, 在CSDN上找了一些安装OpenCVsharp的方法, 扯淡的是自己作为一个外行,完全不懂别人博客里说一半做一半的教程,也不知道如何学习,后来看了一点OpenCV的函数和找了一点openCvsharp的例子。

 比较坑的是,一看例子的函数要么是没有定义的,要么就是定义的实例无法访问,局部变量超界了。后来经过自己修改,总算可以用了。主要有以下几个坑。

1. openCvsharp 如何引用!

首先声明,我用的是VS2017的C#,具体方法,新建Windows窗体应用

C# CSharp winform 使用openCvSharp 3 访问笔记本电脑自带的摄像头解决办法_第1张图片

然后在工具中 如图选择NuGet程序包

C# CSharp winform 使用openCvSharp 3 访问笔记本电脑自带的摄像头解决办法_第2张图片

接着搜索opencvsharp,在左边栏目里面勾选自己当前的项目,点击安装即可,安装完成后,opencvsharp3-AnyCpu 就会自动加载和引用到当前文件中。 那么引用后如何使用呢?

C# CSharp winform 使用openCvSharp 3 访问笔记本电脑自带的摄像头解决办法_第3张图片

就是在需要用到该库的cs文件最顶端,使用#using  opencvsharp

C# CSharp winform 使用openCvSharp 3 访问笔记本电脑自带的摄像头解决办法_第4张图片

2.调用笔记本摄像头

使用opencvsharp 里面的函数即可,我们这次调用摄像头当前的画面,并显示出来。在主程序文件cs内,主函数写如下语句。

   VideoCapture myCamer = new VideoCapture(0);// myCamer 是自己随便取一个实例的名字,括号里面写0 默认就是笔记本电脑摄像头。

        static void Main()
        {
            VideoCapture myCamer = new VideoCapture(0);//开启摄像头
            Mat frame = new Mat();              //构造一个Mat 的新实例
            Cv2.WaitKey(100);                    // Cv2.WaitKey(100);等待100ms  相当于延时
            myCamer.Read(frame);                 //将摄像头数据 读如frame中
            Cv2.ImShow("111", frame);           //调用Cv2.ImShow(“窗口名字”,一个Mat类型的图像)
            Cv2.WaitKey();                      //  等待键盘按下 结束程序

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

点击运行程序,即可获取摄像头的一张照片。

如果大家的也完成了,希望点个赞呀^^

C# CSharp winform 使用openCvSharp 3 访问笔记本电脑自带的摄像头解决办法_第5张图片

如果要获取连续的摄像头图像,相当于让图片每个间隔几十毫秒显示,即可完成。即构建一个while。

下一次给大家介绍

你可能感兴趣的:(水下机器人,C#入门)