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); }
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); }