「图像处理」OpenCVSharp 调用摄像头及人脸识别

关于OpencvSharp,可以参考之前的文档《OpenCV在C#中使用基础(OpenCVSharp)》

是Opencv在.Net平台的封装。

目前OpencvSharp出到版本4,在nuget中直接装OpencvSharp4.windows即可,目前已经支持.Net Core了。

「图像处理」OpenCVSharp 调用摄像头及人脸识别_第1张图片

使用OpencvSharp调用摄像头,获取图像,并进行人脸人眼检测、绘制、显示。代码如下:

static void Main(string[] args)
{
    //获取camera
    FrameSource video = Cv2.CreateFrameSource_Camera(1);
    //声明窗口
    Cv2.NamedWindow("video", WindowMode.Normal);
    while (true)
    {
        //获取帧
        Mat frame = new Mat();
        video.NextFrame(frame);
        //加载人眼、人脸模型数据
        OpenCvSharp.CascadeClassifier faceFinder = new CascadeClassifier(@"C:\opencv420\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml");
        OpenCvSharp.CascadeClassifier eyeFinder = new CascadeClassifier(@"C:\opencv420\opencv\sources\data\haarcascades\haarcascade_eye_tree_eyeglasses.xml");
        //进行检测识别
        Rect[] faceRects = faceFinder.DetectMultiScale(frame);
        Rect[] eyeRects = eyeFinder.DetectMultiScale(frame);
        //如果有检测到,就绘制结果到图像上
        if (faceRects.Length > 0)
        {
            Cv2.Rectangle(frame, faceRects[0], new Scalar(0, 0, 255), 3);
        }
        if (eyeRects.Length > 1)
        {
            Cv2.Rectangle(frame, eyeRects[0], new Scalar(255, 0, 0), 3);
            Cv2.Rectangle(frame, eyeRects[1], new Scalar(255, 0, 0), 3);
        }
        //显示结果
        Cv2.ImShow("video", frame);
        Cv2.WaitKey(1);
    }
}

用到的命名空间自然得有 OpenCvSharp。

其次要说明的是

"C:\opencv420\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml" 和
"C:\opencv420\opencv\sources\data\haarcascades\haarcascade_eye_tree_eyeglasses.xml"

两个文件,这两个文件来自于Opencv(官方C++库),需要下载安装Opencv,在如上的的相应目录去找(我的安装在“C:\opencv420”目录)。

可以参考《OpenCV的安装与配置》(只需要安装就好),当然你也可以借助强大的百度直接下搜索载。opencv中提供了很多数模型文件,有兴趣的也可以多试试别的。

「图像处理」OpenCVSharp 调用摄像头及人脸识别_第2张图片

最终效果如下:

「图像处理」OpenCVSharp 调用摄像头及人脸识别_第3张图片

你可能感兴趣的:(「图像处理」,.NET,Core,假装会写C#,opencv,人脸识别,图像识别)