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

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

是Opencv在.Net平台的封装。

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

使用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中提供了很多数模型文件,有兴趣的也可以多试试别的。

最终效果如下:

  • 2
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值