资源简介

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.0\Debug\main.exe

     文件    2038180  2018-04-13 21:09  eyelike1.0\Debug\main.ilk

     文件    1936384  2018-04-13 21:09  eyelike1.0\Debug\main.pdb

     文件   47906816  2018-04-14 14:54  eyelike1.0\ipch\main-e69ee443\main-62bed6b1.ipch

     文件        685  2017-10-17 01:07  eyelike1.0\main\constants.h

     文件      10510  2018-04-13 21:09  eyelike1.0\main\Debug\cl.command.1.tlog

     文件      89002  2018-04-13 21:09  eyelike1.0\main\Debug\CL.read.1.tlog

     文件       6528  2018-04-13 21:09  eyelike1.0\main\Debug\CL.write.1.tlog

     文件     267423  2018-04-13 21:09  eyelike1.0\main\Debug\findEyeCenter.obj

     文件     143049  2018-04-13 21:09  eyelike1.0\main\Debug\findEyeCorner.obj

     文件     139689  2018-04-13 21:09  eyelike1.0\main\Debug\helpers.obj

     文件          2  2018-04-13 21:09  eyelike1.0\main\Debug\link-cvtres.read.1.tlog

     文件          2  2018-04-13 21:09  eyelike1.0\main\Debug\link-cvtres.write.1.tlog

     文件          2  2018-04-13 21:09  eyelike1.0\main\Debug\link.3356-cvtres.read.1.tlog

     文件          2  2018-04-13 21:09  eyelike1.0\main\Debug\link.3356-cvtres.write.1.tlog

     文件          2  2018-04-13 21:09  eyelike1.0\main\Debug\link.3356.read.1.tlog

     文件          2  2018-04-13 21:09  eyelike1.0\main\Debug\link.3356.write.1.tlog

     文件       9598  2018-04-13 21:09  eyelike1.0\main\Debug\link.command.1.tlog

     文件      18796  2018-04-13 21:09  eyelike1.0\main\Debug\link.read.1.tlog

     文件       3542  2018-04-13 21:09  eyelike1.0\main\Debug\link.write.1.tlog

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

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

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

     文件         73  2018-04-14 15:45  eyelike1.0\main\Debug\main.lastbuildstate

     文件        873  2018-04-14 15:45  eyelike1.0\main\Debug\main.log

     文件     315762  2018-04-13 21:09  eyelike1.0\main\Debug\main.obj

     文件        713  2018-03-31 13:52  eyelike1.0\main\Debug\main.vcxprojResolveAssemblyReference.cache

     文件          0  2018-03-31 13:52  eyelike1.0\main\Debug\main.write.1.tlog

     文件        198  2018-03-31 14:08  eyelike1.0\main\Debug\main_manifest.rc

     文件       1116  2018-04-13 21:09  eyelike1.0\main\Debug\mt.command.1.tlog

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

评论

共有 条评论