mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 07:43:03 +04:00
Merge pull request #19392 from amirtu:OCV-165_finalize_goodFeaturesToTrack_returns_also_corner_value_PR
* goodFeaturesToTrack returns also corner value (cherry picked from commit4a8f06755c) * Added response to GFTT Detector keypoints (cherry picked from commitb88fb40c6e) * Moved corner values to another optional variable to preserve backward compatibility (cherry picked from commit6137383d32) * Removed corners valus from perf tests and better unit tests for corners values (cherry picked from commitf3d0ef21a7) * Fixed detector gftt call (cherry picked from commitbe2975553b) * Restored test_cornerEigenValsVecs (cherry picked from commitea3e11811f) * scaling fixed; mineigen calculation rolled back; gftt function overload added (with quality parameter); perf tests were added for the new api function; external bindings were added for the function (with different alias); fixed issues with composition of the output array of the new function (e.g. as requested in comments) ; added sanity checks in the perf tests; removed C API changes. * minor change to GFTTDetector::detect * substitute ts->printf with EXPECT_LE * avoid re-allocations Co-authored-by: Anas <anas.el.amraoui@live.com> Co-authored-by: amir.tulegenov <amir.tulegenov@xperience.ai>
This commit is contained in:
@@ -87,6 +87,7 @@ public:
|
||||
}
|
||||
|
||||
std::vector<Point2f> corners;
|
||||
std::vector<float> cornersQuality;
|
||||
|
||||
if (_image.isUMat())
|
||||
{
|
||||
@@ -97,7 +98,7 @@ public:
|
||||
ugrayImage = _image.getUMat();
|
||||
|
||||
goodFeaturesToTrack( ugrayImage, corners, nfeatures, qualityLevel, minDistance, _mask,
|
||||
blockSize, gradSize, useHarrisDetector, k );
|
||||
cornersQuality, blockSize, gradSize, useHarrisDetector, k );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -106,14 +107,14 @@ public:
|
||||
cvtColor( image, grayImage, COLOR_BGR2GRAY );
|
||||
|
||||
goodFeaturesToTrack( grayImage, corners, nfeatures, qualityLevel, minDistance, _mask,
|
||||
blockSize, gradSize, useHarrisDetector, k );
|
||||
cornersQuality, blockSize, gradSize, useHarrisDetector, k );
|
||||
}
|
||||
|
||||
CV_Assert(corners.size() == cornersQuality.size());
|
||||
|
||||
keypoints.resize(corners.size());
|
||||
std::vector<Point2f>::const_iterator corner_it = corners.begin();
|
||||
std::vector<KeyPoint>::iterator keypoint_it = keypoints.begin();
|
||||
for( ; corner_it != corners.end() && keypoint_it != keypoints.end(); ++corner_it, ++keypoint_it )
|
||||
*keypoint_it = KeyPoint( *corner_it, (float)blockSize );
|
||||
for (size_t i = 0; i < corners.size(); i++)
|
||||
keypoints[i] = KeyPoint(corners[i], (float)blockSize, -1, cornersQuality[i]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user