zoukankan      html  css  js  c++  java
  • 【EmguCv】眼睛和瞳孔定位(一)

    定位思路

    1.定位脸部
    2. 将脸部分为左右两张图像
    3. 分别在左右脸部图像中定位眼睛
    4. 对眼睛进行模糊处理,寻找瞳孔
    5. 得到瞳孔轮廓重心

    一、脸部定位

    public List<Image<Bgr, byte>> GetFaceImgList(Image<Bgr, byte> img)
            {
                CascadeClassifier faceClassifier = new CascadeClassifier("haarcascade_frontalface_default.xml");
                List<Image<Bgr, byte>> facelist = new List<Image<Bgr, byte>>();
                Rectangle[] faces = faceClassifier.DetectMultiScale(img, 1.3, 3, new Size(40, 40));
                try
                {
                    foreach (Rectangle face in faces)
                    {
                        CvInvoke.Rectangle(img, face, new Bgr(Color.Red).MCvScalar, 2);
                        CvInvoke.cvSetImageROI(img, face);
                        Image<Bgr, byte> roi = new Image<Bgr, byte>(face.Size);
                        CvInvoke.cvCopy(img, roi, IntPtr.Zero);
                        facelist.Add(roi);
                    }
                    if (facelist.Count != 0)
                        return facelist;
                    else
                    {
                        facelist.Add(img);
                        return facelist;
                    }
    
                }
                catch (Exception ex)
                {
                    MessageBox.Show("脸部检测失败,详细原因
    " + ex.Message + "
    " + ex.StackTrace);
                    facelist.Add(img);
                    return facelist;
                }
            }

    二、眼睛定位

    同脸部定位一样,用眼睛检测文件。

    三、模糊处理

    对眼部图像进行模糊处理,可以更好的得到瞳孔的轮廓

    四、获取轮廓的重心

    对瞳孔图像提取轮廓,计算轮廓的重心即眼睛的重心。

    这里写图片描述

  • 相关阅读:
    Spring 学习笔记
    Hello Spring(3)ConnectionUtility
    android ndk开发
    java udp 广播及socket通讯
    android 横向滚动屏幕实现(2)
    android 基于ftp远程文件管理
    android 软键盘的弹出问题总结
    android 滚动字幕
    android 基于apache ftp server
    android 设置壁纸几种方法
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286741.html
Copyright © 2011-2022 走看看