diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 12d3fb70..39816934 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -489,7 +489,7 @@ def corner_peaks(image, min_distance=10, threshold_abs=0, threshold_rel=0.1, threshold_abs=threshold_abs, threshold_rel=threshold_rel, exclude_border=exclude_border, - indices=False, num_peaks=np.inf, + indices=False, num_peaks=num_peaks, footprint=footprint, labels=labels) if min_distance > 0: coords = np.transpose(peaks.nonzero()) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index a7ee01ff..fa8ddd17 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -100,6 +100,19 @@ def test_subpix(): assert_array_equal(subpix[0], (24.5, 24.5)) +def test_num_peaks(): + """For a bunch of different values of num_peaks, check that + peak_local_max returns exactly the right amount of peaks. Test + is run on Lena in order to produce a sufficient number of corners""" + + lena_corners = corner_harris(data.lena()) + + for i in range(20): + n = np.random.random_integers(20) + results = peak_local_max(lena_corners, num_peaks=n) + assert (results.shape[0] == n) + + def test_corner_peaks(): response = np.zeros((5, 5)) response[2:4, 2:4] = 1