Пример #1
0
cv::Point2f findSubpixelEyeCorner(cv::Mat region, cv::Point maxP) 
{

  cv::Size sizeRegion = region.size();

  cv::Mat cornerMap(sizeRegion.height * 10, sizeRegion.width * 10, CV_32F);

  cv::resize(region, cornerMap, cornerMap.size(), 0, 0, cv::INTER_CUBIC);

  cv::Point maxP2;
  cv::minMaxLoc(cornerMap, NULL,NULL,NULL,&maxP2);

  return cv::Point2f(sizeRegion.width / 2 + maxP2.x / 10,
                     sizeRegion.height / 2 + maxP2.y / 10);
}
Пример #2
0
cv::Point2f findSubpixelEyeCorner(cv::Mat region, cv::Point maxP) {
    
    cv::Size sizeRegion = region.size();
    
    // Matrix dichotomy
    // Not useful, matrix becomes too small
    
    /*int offsetX = 0;
     if(maxP.x - sizeRegion.width / 4 <= 0) {
     offsetX = 0;
     } else if(maxP.x + sizeRegion.width / 4 >= sizeRegion.width) {
     offsetX = sizeRegion.width / 2 - 1;
     } else {
     offsetX = maxP.x - sizeRegion.width / 4;
     }
     int offsetY = 0;
     if(maxP.y - sizeRegion.height / 4 <= 0) {
     offsetY = 0;
     } else if(maxP.y + sizeRegion.height / 4 >= sizeRegion.height) {
     offsetY = sizeRegion.height / 2 - 1;
     } else {
     offsetY = maxP.y - sizeRegion.height / 4;
     }
     cv::Range colRange(offsetX, offsetX + sizeRegion.width / 2);
     cv::Range rowRange(offsetY, offsetY + sizeRegion.height / 2);
     
     cv::Mat miRegion(region, rowRange, colRange);
     
     
     if(left){
     imshow("aa",miRegion);
     } else {
     imshow("aaa",miRegion);
     }*/
    
    cv::Mat cornerMap(sizeRegion.height * 10, sizeRegion.width * 10, CV_32F);
    
    cv::resize(region, cornerMap, cornerMap.size(), 0, 0, cv::INTER_CUBIC);
    
    cv::Point maxP2;
    cv::minMaxLoc(cornerMap, NULL,NULL,NULL,&maxP2);
    
    return cv::Point2f(sizeRegion.width / 2 + maxP2.x / 10,
                       sizeRegion.height / 2 + maxP2.y / 10);
}