Commit 39e74276 authored by vipinanand4's avatar vipinanand4 Committed by Alexander Alekhin

Merge pull request #9618 from vipinanand4:goodFeaturesToTrack_added_gradiantSize

Added gradiantSize param into goodFeaturesToTrack API (#9618)

* Added gradiantSize param into goodFeaturesToTrack API

Removed hardcode value 3 in goodFeaturesToTrack API, and
added new param 'gradinatSize' in this API so that user can
pass any gradiant size as 3, 5 or 7.
Signed-off-by: 's avatarVipin Anand <anand.vipin@gmail.com>
Signed-off-by: Nilaykumar Patel<nilay.nilpat@gmail.com>
Signed-off-by: 's avatarPrashanth Voora <prashanthx85@gmail.com>

* fixed compilation error for java test
Signed-off-by: 's avatarVipin Anand <anand.vipin@gmail.com>

* Modifying code for previous binary compatibility and fixing other warnings

fixed ABI break issue

resolved merged conflict

compilation error fix
Signed-off-by: 's avatarVipin Anand <anand.vipin@gmail.com>
Signed-off-by: 's avatarPatel, Nilaykumar K <nilay.nilpat@gmail.com>
parent 50aa4f88
...@@ -527,6 +527,8 @@ class CV_EXPORTS_W GFTTDetector : public Feature2D ...@@ -527,6 +527,8 @@ class CV_EXPORTS_W GFTTDetector : public Feature2D
public: public:
CV_WRAP static Ptr<GFTTDetector> create( int maxCorners=1000, double qualityLevel=0.01, double minDistance=1, CV_WRAP static Ptr<GFTTDetector> create( int maxCorners=1000, double qualityLevel=0.01, double minDistance=1,
int blockSize=3, bool useHarrisDetector=false, double k=0.04 ); int blockSize=3, bool useHarrisDetector=false, double k=0.04 );
CV_WRAP static Ptr<GFTTDetector> create( int maxCorners, double qualityLevel, double minDistance,
int blockSize, int gradiantSize, bool useHarrisDetector=false, double k=0.04 );
CV_WRAP virtual void setMaxFeatures(int maxFeatures) = 0; CV_WRAP virtual void setMaxFeatures(int maxFeatures) = 0;
CV_WRAP virtual int getMaxFeatures() const = 0; CV_WRAP virtual int getMaxFeatures() const = 0;
......
...@@ -48,10 +48,10 @@ class GFTTDetector_Impl : public GFTTDetector ...@@ -48,10 +48,10 @@ class GFTTDetector_Impl : public GFTTDetector
{ {
public: public:
GFTTDetector_Impl( int _nfeatures, double _qualityLevel, GFTTDetector_Impl( int _nfeatures, double _qualityLevel,
double _minDistance, int _blockSize, double _minDistance, int _blockSize, int _gradientSize,
bool _useHarrisDetector, double _k ) bool _useHarrisDetector, double _k )
: nfeatures(_nfeatures), qualityLevel(_qualityLevel), minDistance(_minDistance), : nfeatures(_nfeatures), qualityLevel(_qualityLevel), minDistance(_minDistance),
blockSize(_blockSize), useHarrisDetector(_useHarrisDetector), k(_k) blockSize(_blockSize), gradSize(_gradientSize), useHarrisDetector(_useHarrisDetector), k(_k)
{ {
} }
...@@ -67,6 +67,9 @@ public: ...@@ -67,6 +67,9 @@ public:
void setBlockSize(int blockSize_) { blockSize = blockSize_; } void setBlockSize(int blockSize_) { blockSize = blockSize_; }
int getBlockSize() const { return blockSize; } int getBlockSize() const { return blockSize; }
void setGradientSize(int gradientSize_) { gradSize = gradientSize_; }
int getGradientSize() { return gradSize; }
void setHarrisDetector(bool val) { useHarrisDetector = val; } void setHarrisDetector(bool val) { useHarrisDetector = val; }
bool getHarrisDetector() const { return useHarrisDetector; } bool getHarrisDetector() const { return useHarrisDetector; }
...@@ -88,7 +91,7 @@ public: ...@@ -88,7 +91,7 @@ public:
ugrayImage = _image.getUMat(); ugrayImage = _image.getUMat();
goodFeaturesToTrack( ugrayImage, corners, nfeatures, qualityLevel, minDistance, _mask, goodFeaturesToTrack( ugrayImage, corners, nfeatures, qualityLevel, minDistance, _mask,
blockSize, useHarrisDetector, k ); blockSize, gradSize, useHarrisDetector, k );
} }
else else
{ {
...@@ -97,7 +100,7 @@ public: ...@@ -97,7 +100,7 @@ public:
cvtColor( image, grayImage, COLOR_BGR2GRAY ); cvtColor( image, grayImage, COLOR_BGR2GRAY );
goodFeaturesToTrack( grayImage, corners, nfeatures, qualityLevel, minDistance, _mask, goodFeaturesToTrack( grayImage, corners, nfeatures, qualityLevel, minDistance, _mask,
blockSize, useHarrisDetector, k ); blockSize, gradSize, useHarrisDetector, k );
} }
keypoints.resize(corners.size()); keypoints.resize(corners.size());
...@@ -112,17 +115,26 @@ public: ...@@ -112,17 +115,26 @@ public:
double qualityLevel; double qualityLevel;
double minDistance; double minDistance;
int blockSize; int blockSize;
int gradSize;
bool useHarrisDetector; bool useHarrisDetector;
double k; double k;
}; };
Ptr<GFTTDetector> GFTTDetector::create( int _nfeatures, double _qualityLevel,
double _minDistance, int _blockSize, int _gradientSize,
bool _useHarrisDetector, double _k )
{
return makePtr<GFTTDetector_Impl>(_nfeatures, _qualityLevel,
_minDistance, _blockSize, _gradientSize, _useHarrisDetector, _k);
}
Ptr<GFTTDetector> GFTTDetector::create( int _nfeatures, double _qualityLevel, Ptr<GFTTDetector> GFTTDetector::create( int _nfeatures, double _qualityLevel,
double _minDistance, int _blockSize, double _minDistance, int _blockSize,
bool _useHarrisDetector, double _k ) bool _useHarrisDetector, double _k )
{ {
return makePtr<GFTTDetector_Impl>(_nfeatures, _qualityLevel, return makePtr<GFTTDetector_Impl>(_nfeatures, _qualityLevel,
_minDistance, _blockSize, _useHarrisDetector, _k); _minDistance, _blockSize, 3, _useHarrisDetector, _k);
} }
String GFTTDetector::getDefaultName() const String GFTTDetector::getDefaultName() const
......
...@@ -139,7 +139,7 @@ TEST(Features2d_Detector_Keypoints_AGAST, validation) ...@@ -139,7 +139,7 @@ TEST(Features2d_Detector_Keypoints_AGAST, validation)
TEST(Features2d_Detector_Keypoints_HARRIS, validation) TEST(Features2d_Detector_Keypoints_HARRIS, validation)
{ {
CV_FeatureDetectorKeypointsTest test(GFTTDetector::create(1000, 0.01, 1, 3, true, 0.04)); CV_FeatureDetectorKeypointsTest test(GFTTDetector::create(1000, 0.01, 1, 3, 3, true, 0.04));
test.safe_run(); test.safe_run();
} }
......
...@@ -1914,11 +1914,17 @@ or cornerMinEigenVal. ...@@ -1914,11 +1914,17 @@ or cornerMinEigenVal.
@sa cornerMinEigenVal, cornerHarris, calcOpticalFlowPyrLK, estimateRigidTransform, @sa cornerMinEigenVal, cornerHarris, calcOpticalFlowPyrLK, estimateRigidTransform,
*/ */
CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, OutputArray corners, CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, OutputArray corners,
int maxCorners, double qualityLevel, double minDistance, int maxCorners, double qualityLevel, double minDistance,
InputArray mask = noArray(), int blockSize = 3, InputArray mask = noArray(), int blockSize = 3,
bool useHarrisDetector = false, double k = 0.04 ); bool useHarrisDetector = false, double k = 0.04 );
CV_EXPORTS_W void goodFeaturesToTrack( InputArray image, OutputArray corners,
int maxCorners, double qualityLevel, double minDistance,
InputArray mask, int blockSize,
int gradientSize, bool useHarrisDetector = false,
double k = 0.04 );
/** @example houghlines.cpp /** @example houghlines.cpp
An example using the Hough line detector An example using the Hough line detector
![Sample input image](Hough_Lines_Tutorial_Original_Image.jpg) ![Output image](Hough_Lines_Tutorial_Result.jpg) ![Sample input image](Hough_Lines_Tutorial_Original_Image.jpg) ![Output image](Hough_Lines_Tutorial_Result.jpg)
......
...@@ -1033,7 +1033,7 @@ public class ImgprocTest extends OpenCVTestCase { ...@@ -1033,7 +1033,7 @@ public class ImgprocTest extends OpenCVTestCase {
Imgproc.rectangle(src, new Point(2, 2), new Point(8, 8), new Scalar(100), -1); Imgproc.rectangle(src, new Point(2, 2), new Point(8, 8), new Scalar(100), -1);
MatOfPoint lp = new MatOfPoint(); MatOfPoint lp = new MatOfPoint();
Imgproc.goodFeaturesToTrack(src, lp, 100, 0.01, 3, gray1, 4, true, 0); Imgproc.goodFeaturesToTrack(src, lp, 100, 0.01, 3, gray1, 4, 3, true, 0);
assertEquals(4, lp.total()); assertEquals(4, lp.total());
} }
......
...@@ -77,7 +77,7 @@ OCL_PERF_TEST_P(GoodFeaturesToTrackFixture, GoodFeaturesToTrack, ...@@ -77,7 +77,7 @@ OCL_PERF_TEST_P(GoodFeaturesToTrackFixture, GoodFeaturesToTrack,
declare.in(src, WARMUP_READ).out(dst); declare.in(src, WARMUP_READ).out(dst);
OCL_TEST_CYCLE() cv::goodFeaturesToTrack(src, dst, maxCorners, qualityLevel, OCL_TEST_CYCLE() cv::goodFeaturesToTrack(src, dst, maxCorners, qualityLevel,
minDistance, noArray(), 3, harrisDetector, 0.04); minDistance, noArray(), 3, 3, harrisDetector, 0.04);
SANITY_CHECK(dst); SANITY_CHECK(dst);
} }
......
...@@ -6,15 +6,16 @@ using namespace perf; ...@@ -6,15 +6,16 @@ using namespace perf;
using std::tr1::make_tuple; using std::tr1::make_tuple;
using std::tr1::get; using std::tr1::get;
typedef std::tr1::tuple<string, int, double, int, bool> Image_MaxCorners_QualityLevel_MinDistance_BlockSize_UseHarris_t; typedef std::tr1::tuple<string, int, double, int, int, bool> Image_MaxCorners_QualityLevel_MinDistance_BlockSize_gradientSize_UseHarris_t;
typedef perf::TestBaseWithParam<Image_MaxCorners_QualityLevel_MinDistance_BlockSize_UseHarris_t> Image_MaxCorners_QualityLevel_MinDistance_BlockSize_UseHarris; typedef perf::TestBaseWithParam<Image_MaxCorners_QualityLevel_MinDistance_BlockSize_gradientSize_UseHarris_t> Image_MaxCorners_QualityLevel_MinDistance_BlockSize_gradientSize_UseHarris;
PERF_TEST_P(Image_MaxCorners_QualityLevel_MinDistance_BlockSize_UseHarris, goodFeaturesToTrack, PERF_TEST_P(Image_MaxCorners_QualityLevel_MinDistance_BlockSize_gradientSize_UseHarris, goodFeaturesToTrack,
testing::Combine( testing::Combine(
testing::Values( "stitching/a1.png", "cv/shared/pic5.png"), testing::Values( "stitching/a1.png", "cv/shared/pic5.png"),
testing::Values( 100, 500 ), testing::Values( 100, 500 ),
testing::Values( 0.1, 0.01 ), testing::Values( 0.1, 0.01 ),
testing::Values( 3, 5 ), testing::Values( 3, 5 ),
testing::Values( 3, 5 ),
testing::Bool() testing::Bool()
) )
) )
...@@ -23,7 +24,8 @@ PERF_TEST_P(Image_MaxCorners_QualityLevel_MinDistance_BlockSize_UseHarris, goodF ...@@ -23,7 +24,8 @@ PERF_TEST_P(Image_MaxCorners_QualityLevel_MinDistance_BlockSize_UseHarris, goodF
int maxCorners = get<1>(GetParam()); int maxCorners = get<1>(GetParam());
double qualityLevel = get<2>(GetParam()); double qualityLevel = get<2>(GetParam());
int blockSize = get<3>(GetParam()); int blockSize = get<3>(GetParam());
bool useHarrisDetector = get<4>(GetParam()); int gradientSize = get<4>(GetParam());
bool useHarrisDetector = get<5>(GetParam());
Mat image = imread(filename, IMREAD_GRAYSCALE); Mat image = imread(filename, IMREAD_GRAYSCALE);
if (image.empty()) if (image.empty())
...@@ -32,7 +34,7 @@ PERF_TEST_P(Image_MaxCorners_QualityLevel_MinDistance_BlockSize_UseHarris, goodF ...@@ -32,7 +34,7 @@ PERF_TEST_P(Image_MaxCorners_QualityLevel_MinDistance_BlockSize_UseHarris, goodF
std::vector<Point2f> corners; std::vector<Point2f> corners;
double minDistance = 1; double minDistance = 1;
TEST_CYCLE() goodFeaturesToTrack(image, corners, maxCorners, qualityLevel, minDistance, noArray(), blockSize, useHarrisDetector); TEST_CYCLE() goodFeaturesToTrack(image, corners, maxCorners, qualityLevel, minDistance, noArray(), blockSize, gradientSize, useHarrisDetector);
if (corners.size() > 50) if (corners.size() > 50)
corners.erase(corners.begin() + 50, corners.end()); corners.erase(corners.begin() + 50, corners.end());
......
...@@ -75,14 +75,14 @@ struct Corner ...@@ -75,14 +75,14 @@ struct Corner
static bool ocl_goodFeaturesToTrack( InputArray _image, OutputArray _corners, static bool ocl_goodFeaturesToTrack( InputArray _image, OutputArray _corners,
int maxCorners, double qualityLevel, double minDistance, int maxCorners, double qualityLevel, double minDistance,
InputArray _mask, int blockSize, InputArray _mask, int blockSize, int gradientSize,
bool useHarrisDetector, double harrisK ) bool useHarrisDetector, double harrisK )
{ {
UMat eig, maxEigenValue; UMat eig, maxEigenValue;
if( useHarrisDetector ) if( useHarrisDetector )
cornerHarris( _image, eig, blockSize, 3, harrisK ); cornerHarris( _image, eig, blockSize, gradientSize, harrisK );
else else
cornerMinEigenVal( _image, eig, blockSize, 3 ); cornerMinEigenVal( _image, eig, blockSize, gradientSize );
Size imgsize = _image.size(); Size imgsize = _image.size();
size_t total, i, j, ncorners = 0, possibleCornersCount = size_t total, i, j, ncorners = 0, possibleCornersCount =
...@@ -275,7 +275,7 @@ struct VxKeypointsComparator ...@@ -275,7 +275,7 @@ struct VxKeypointsComparator
static bool openvx_harris(Mat image, OutputArray _corners, static bool openvx_harris(Mat image, OutputArray _corners,
int _maxCorners, double _qualityLevel, double _minDistance, int _maxCorners, double _qualityLevel, double _minDistance,
int _blockSize, double _harrisK) int _blockSize, int gradiantSize, double _harrisK)
{ {
using namespace ivx; using namespace ivx;
...@@ -357,7 +357,7 @@ static bool openvx_harris(Mat image, OutputArray _corners, ...@@ -357,7 +357,7 @@ static bool openvx_harris(Mat image, OutputArray _corners,
void cv::goodFeaturesToTrack( InputArray _image, OutputArray _corners, void cv::goodFeaturesToTrack( InputArray _image, OutputArray _corners,
int maxCorners, double qualityLevel, double minDistance, int maxCorners, double qualityLevel, double minDistance,
InputArray _mask, int blockSize, InputArray _mask, int blockSize, int gradientSize,
bool useHarrisDetector, double harrisK ) bool useHarrisDetector, double harrisK )
{ {
CV_INSTRUMENT_REGION() CV_INSTRUMENT_REGION()
...@@ -367,7 +367,7 @@ void cv::goodFeaturesToTrack( InputArray _image, OutputArray _corners, ...@@ -367,7 +367,7 @@ void cv::goodFeaturesToTrack( InputArray _image, OutputArray _corners,
CV_OCL_RUN(_image.dims() <= 2 && _image.isUMat(), CV_OCL_RUN(_image.dims() <= 2 && _image.isUMat(),
ocl_goodFeaturesToTrack(_image, _corners, maxCorners, qualityLevel, minDistance, ocl_goodFeaturesToTrack(_image, _corners, maxCorners, qualityLevel, minDistance,
_mask, blockSize, useHarrisDetector, harrisK)) _mask, blockSize, gradientSize, useHarrisDetector, harrisK))
Mat image = _image.getMat(), eig, tmp; Mat image = _image.getMat(), eig, tmp;
if (image.empty()) if (image.empty())
...@@ -379,12 +379,12 @@ void cv::goodFeaturesToTrack( InputArray _image, OutputArray _corners, ...@@ -379,12 +379,12 @@ void cv::goodFeaturesToTrack( InputArray _image, OutputArray _corners,
// Disabled due to bad accuracy // Disabled due to bad accuracy
CV_OVX_RUN(false && useHarrisDetector && _mask.empty() && CV_OVX_RUN(false && useHarrisDetector && _mask.empty() &&
!ovx::skipSmallImages<VX_KERNEL_HARRIS_CORNERS>(image.cols, image.rows), !ovx::skipSmallImages<VX_KERNEL_HARRIS_CORNERS>(image.cols, image.rows),
openvx_harris(image, _corners, maxCorners, qualityLevel, minDistance, blockSize, harrisK)) openvx_harris(image, _corners, maxCorners, qualityLevel, minDistance, blockSize, gradiantSize, harrisK))
if( useHarrisDetector ) if( useHarrisDetector )
cornerHarris( image, eig, blockSize, 3, harrisK ); cornerHarris( image, eig, blockSize, gradientSize, harrisK );
else else
cornerMinEigenVal( image, eig, blockSize, 3 ); cornerMinEigenVal( image, eig, blockSize, gradientSize );
double maxVal = 0; double maxVal = 0;
minMaxLoc( eig, 0, &maxVal, 0, 0, _mask ); minMaxLoc( eig, 0, &maxVal, 0, 0, _mask );
...@@ -535,4 +535,12 @@ cvGoodFeaturesToTrack( const void* _image, void*, void*, ...@@ -535,4 +535,12 @@ cvGoodFeaturesToTrack( const void* _image, void*, void*,
*_corner_count = (int)ncorners; *_corner_count = (int)ncorners;
} }
void cv::goodFeaturesToTrack( InputArray _image, OutputArray _corners,
int maxCorners, double qualityLevel, double minDistance,
InputArray _mask, int blockSize,
bool useHarrisDetector, double harrisK )
{
cv::goodFeaturesToTrack(_image, _corners, maxCorners, qualityLevel, minDistance,
_mask, blockSize, 3, useHarrisDetector, harrisK );
}
/* End of file. */ /* End of file. */
...@@ -161,7 +161,7 @@ test_cornerEigenValsVecs( const Mat& src, Mat& eigenv, int block_size, ...@@ -161,7 +161,7 @@ test_cornerEigenValsVecs( const Mat& src, Mat& eigenv, int block_size,
static void static void
test_goodFeaturesToTrack( InputArray _image, OutputArray _corners, test_goodFeaturesToTrack( InputArray _image, OutputArray _corners,
int maxCorners, double qualityLevel, double minDistance, int maxCorners, double qualityLevel, double minDistance,
InputArray _mask, int blockSize, InputArray _mask, int blockSize, int gradientSize,
bool useHarrisDetector, double harrisK ) bool useHarrisDetector, double harrisK )
{ {
...@@ -170,7 +170,7 @@ test_goodFeaturesToTrack( InputArray _image, OutputArray _corners, ...@@ -170,7 +170,7 @@ test_goodFeaturesToTrack( InputArray _image, OutputArray _corners,
Mat image = _image.getMat(), mask = _mask.getMat(); Mat image = _image.getMat(), mask = _mask.getMat();
int aperture_size = 3; int aperture_size = gradientSize;
int borderType = BORDER_DEFAULT; int borderType = BORDER_DEFAULT;
Mat eig, tmp, tt; Mat eig, tmp, tt;
...@@ -330,6 +330,7 @@ protected: ...@@ -330,6 +330,7 @@ protected:
double qualityLevel; double qualityLevel;
double minDistance; double minDistance;
int blockSize; int blockSize;
int gradientSize;
bool useHarrisDetector; bool useHarrisDetector;
double k; double k;
int SrcType; int SrcType;
...@@ -343,6 +344,7 @@ CV_GoodFeatureToTTest::CV_GoodFeatureToTTest() ...@@ -343,6 +344,7 @@ CV_GoodFeatureToTTest::CV_GoodFeatureToTTest()
qualityLevel = 0.01; qualityLevel = 0.01;
minDistance = 10; minDistance = 10;
blockSize = 3; blockSize = 3;
gradientSize = 3;
useHarrisDetector = false; useHarrisDetector = false;
k = 0.04; k = 0.04;
mask = Mat(); mask = Mat();
...@@ -397,6 +399,7 @@ void CV_GoodFeatureToTTest::run_func() ...@@ -397,6 +399,7 @@ void CV_GoodFeatureToTTest::run_func()
minDistance, minDistance,
Mat(), Mat(),
blockSize, blockSize,
gradientSize,
useHarrisDetector, useHarrisDetector,
k ); k );
} }
...@@ -414,6 +417,7 @@ void CV_GoodFeatureToTTest::run_func() ...@@ -414,6 +417,7 @@ void CV_GoodFeatureToTTest::run_func()
minDistance, minDistance,
Mat(), Mat(),
blockSize, blockSize,
gradientSize,
useHarrisDetector, useHarrisDetector,
k ); k );
} }
...@@ -438,6 +442,7 @@ int CV_GoodFeatureToTTest::validate_test_results( int test_case_idx ) ...@@ -438,6 +442,7 @@ int CV_GoodFeatureToTTest::validate_test_results( int test_case_idx )
minDistance, minDistance,
Mat(), Mat(),
blockSize, blockSize,
gradientSize,
useHarrisDetector, useHarrisDetector,
k ); k );
} }
...@@ -455,6 +460,7 @@ int CV_GoodFeatureToTTest::validate_test_results( int test_case_idx ) ...@@ -455,6 +460,7 @@ int CV_GoodFeatureToTTest::validate_test_results( int test_case_idx )
minDistance, minDistance,
Mat(), Mat(),
blockSize, blockSize,
gradientSize,
useHarrisDetector, useHarrisDetector,
k ); k );
} }
......
...@@ -81,7 +81,7 @@ int main( int argc, char** argv ) ...@@ -81,7 +81,7 @@ int main( int argc, char** argv )
if( needToInit ) if( needToInit )
{ {
// automatic initialization // automatic initialization
goodFeaturesToTrack(gray, points[1], MAX_COUNT, 0.01, 10, Mat(), 3, 0, 0.04); goodFeaturesToTrack(gray, points[1], MAX_COUNT, 0.01, 10, Mat(), 3, 3, 0, 0.04);
cornerSubPix(gray, points[1], subPixWinSize, Size(-1,-1), termcrit); cornerSubPix(gray, points[1], subPixWinSize, Size(-1,-1), termcrit);
addRemovePt = false; addRemovePt = false;
} }
......
...@@ -59,7 +59,7 @@ void goodFeaturesToTrack_Demo( int, void* ) ...@@ -59,7 +59,7 @@ void goodFeaturesToTrack_Demo( int, void* )
vector<Point2f> corners; vector<Point2f> corners;
double qualityLevel = 0.01; double qualityLevel = 0.01;
double minDistance = 10; double minDistance = 10;
int blockSize = 3; int blockSize = 3, gradiantSize = 3;
bool useHarrisDetector = false; bool useHarrisDetector = false;
double k = 0.04; double k = 0.04;
...@@ -75,6 +75,7 @@ void goodFeaturesToTrack_Demo( int, void* ) ...@@ -75,6 +75,7 @@ void goodFeaturesToTrack_Demo( int, void* )
minDistance, minDistance,
Mat(), Mat(),
blockSize, blockSize,
gradiantSize,
useHarrisDetector, useHarrisDetector,
k ); k );
......
...@@ -59,7 +59,7 @@ void goodFeaturesToTrack_Demo( int, void* ) ...@@ -59,7 +59,7 @@ void goodFeaturesToTrack_Demo( int, void* )
vector<Point2f> corners; vector<Point2f> corners;
double qualityLevel = 0.01; double qualityLevel = 0.01;
double minDistance = 10; double minDistance = 10;
int blockSize = 3; int blockSize = 3, gradiantSize = 3;
bool useHarrisDetector = false; bool useHarrisDetector = false;
double k = 0.04; double k = 0.04;
...@@ -75,6 +75,7 @@ void goodFeaturesToTrack_Demo( int, void* ) ...@@ -75,6 +75,7 @@ void goodFeaturesToTrack_Demo( int, void* )
minDistance, minDistance,
Mat(), Mat(),
blockSize, blockSize,
gradiantSize,
useHarrisDetector, useHarrisDetector,
k ); k );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment