眼球跟踪定位算法,eyelike


eyelike的windows版本,VS2010工程,依赖OpenCV2.4.11。 配套博客链接:https://blog.csdn.net/chaipp0607/article/details/79935302
资源截图
代码片段和文件信息
#include “opencv2/objdetect/objdetect.hpp“
#include “opencv2/highgui/highgui.hpp“
#include “opencv2/imgproc/imgproc.hpp“

//#include 

#include 
#include 
#include 
#include   

#include “constants.h“
#include “helpers.h“

using namespace std;
using namespace cv;

// Pre-declarations
cv::Mat floodKillEdges(cv::Mat &mat);

#pragma mark Visualization
/*
template mglData *matToData(const cv::Mat &mat) {
  mglData *data = new mglData(mat.colsmat.rows);
  for (int y = 0; y < mat.rows; ++y) {
    const T *Mr = mat.ptr(y);
    for (int x = 0; x < mat.cols; ++x) {
      data->Put(((mreal)Mr[x])xy);
    }
  }
  return data;
}

void plotVecField(const cv::Mat &gradientX const cv::Mat &gradientY const cv::Mat &img) {
  mglData *xData = matToData(gradientX);
  mglData *yData = matToData(gradientY);
  mglData *imgData = matToData(img);
  
  mglGraph gr(0gradientX.cols * 20 gradientY.rows * 20);
  gr.Vect(*xData *yData);
  gr.Mesh(*imgData);
  gr.Writeframe(“vecField.png“);
  
  delete xData;
  delete yData;
  delete imgData;
}*/

#pragma mark Helpers
int round(double r)
{
return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
}
cv::Point unscalePoint(cv::Point p cv::Rect origSize) {
  float ratio = (((float)kFastEyeWidth)/origSize.width);
  int x = round(p.x / ratio);
  int y = round(p.y / ratio);
  return cv::Point(xy);
}

void scaleToFastSize(const cv::Mat &srccv::Mat &dst) {
  cv::resize(src dst cv::Size(kFastEyeWidth(((float)kFastEyeWidth)/src.cols) * src.rows));
}

cv::Mat computeMatXGradient(const cv::Mat &mat) {
  cv::Mat out(mat.rowsmat.colsCV_64F);
  
  for (int y = 0; y < mat.rows; ++y) {
    const uchar *Mr = mat.ptr(y);
    double *Or = out.ptr(y);
    
    Or[0] = Mr[1] - Mr[0];
    for (int x = 1; x < mat.cols - 1; ++x) {
      Or[x] = (Mr[x+1] - Mr[x-1])/2.0;
    }
    Or[mat.cols-1] = Mr[mat.cols-1] - Mr[mat.cols-2];
  }
  
  return out;
}

#pragma mark Main Algorithm

void testPossibleCentersFormula(int x int y const cv::Mat &weightdouble gx double gy cv::Mat &out) {
  // for all possible centers
  for (int cy = 0; cy < out.rows; ++cy) {
    double *Or = out.ptr(cy);
    const unsigned char *Wr = weight.ptr(cy);
    for (int cx = 0; cx < out.cols; ++cx) {
      if (x == cx && y == cy) {
        continue;
      }
      // create a vector from the possible center to the gradient origin
      double dx = x - cx;
      double dy = y - cy;
      // normalize d
      double magnitude = sqrt((dx * dx) + (dy * dy));
      dx = dx / magnitude;
      dy = dy / magnitude;
      double dotProduct = dx*gx + dy*gy;
      dotProduct = std::max(0.0dotProduct);
      // square and multiply by the weight
      if (kEnableWeight) {
        Or[cx] += dotProduct * dotProduct * (Wr[cx]/kWeightDivisor);
      } else {
        Or[cx] += dotProduct * dotProduct;
      }
    }
  }
}

cv::Point findEyeCenter(cv::Mat face cv::R

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     136704  2018-04-13 21:09  eyelike1.0Debugmain.exe

     文件    2038180  2018-04-13 21:09  eyelike1.0Debugmain.ilk

     文件    1936384  2018-04-13 21:09  eyelike1.0Debugmain.pdb

     文件   47906816  2018-04-14 14:54  eyelike1.0ipchmain-e69ee443main-62bed6b1.ipch

     文件        685  2017-10-17 01:07  eyelike1.0mainconstants.h

     文件      10510  2018-04-13 21:09  eyelike1.0mainDebugcl.command.1.tlog

     文件      89002  2018-04-13 21:09  eyelike1.0mainDebugCL.read.1.tlog

     文件       6528  2018-04-13 21:09  eyelike1.0mainDebugCL.write.1.tlog

     文件     267423  2018-04-13 21:09  eyelike1.0mainDebugfindEyeCenter.obj

     文件     143049  2018-04-13 21:09  eyelike1.0mainDebugfindEyeCorner.obj

     文件     139689  2018-04-13 21:09  eyelike1.0mainDebughelpers.obj

     文件          2  2018-04-13 21:09  eyelike1.0mainDebuglink-cvtres.read.1.tlog

     文件          2  2018-04-13 21:09  eyelike1.0mainDebuglink-cvtres.write.1.tlog

     文件          2  2018-04-13 21:09  eyelike1.0mainDebuglink.3356-cvtres.read.1.tlog

     文件          2  2018-04-13 21:09  eyelike1.0mainDebuglink.3356-cvtres.write.1.tlog

     文件          2  2018-04-13 21:09  eyelike1.0mainDebuglink.3356.read.1.tlog

     文件          2  2018-04-13 21:09  eyelike1.0mainDebuglink.3356.write.1.tlog

     文件       9598  2018-04-13 21:09  eyelike1.0mainDebuglink.command.1.tlog

     文件      18796  2018-04-13 21:09  eyelike1.0mainDebuglink.read.1.tlog

     文件       3542  2018-04-13 21:09  eyelike1.0mainDebuglink.write.1.tlog

     文件        406  2018-03-31 14:08  eyelike1.0mainDebugmain.exe.embed.manifest

     文件        472  2018-04-13 21:09  eyelike1.0mainDebugmain.exe.embed.manifest.res

     文件        381  2018-04-13 21:09  eyelike1.0mainDebugmain.exe.intermediate.manifest

     文件         73  2018-04-14 15:45  eyelike1.0mainDebugmain.lastbuildstate

     文件        873  2018-04-14 15:45  eyelike1.0mainDebugmain.log

     文件     315762  2018-04-13 21:09  eyelike1.0mainDebugmain.obj

     文件        713  2018-03-31 13:52  eyelike1.0mainDebugmain.vcxprojResolveAssemblyReference.cache

     文件          0  2018-03-31 13:52  eyelike1.0mainDebugmain.write.1.tlog

     文件        198  2018-03-31 14:08  eyelike1.0mainDebugmain_manifest.rc

     文件       1116  2018-04-13 21:09  eyelike1.0mainDebugmt.command.1.tlog

............此处省略29个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)