From bb1add8abd66ca68fb867dafe7ba45b26d7fac78 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Fri, 20 Jul 2012 18:18:05 -0400 Subject: [PATCH] BUG: Ignore colorconv RuntimeWarning:invalid value encountered in true_divide. Sometimes zero divided by zero can occur in this code. Saturation was already explicitly set to zero when 'delta' is zero. According to Wikipedia, hue is undefined when 'delta' here is zero, so explicitly set to zero. --- skimage/color/colorconv.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/skimage/color/colorconv.py b/skimage/color/colorconv.py index 5e2fa5e1..5a158a4c 100644 --- a/skimage/color/colorconv.py +++ b/skimage/color/colorconv.py @@ -164,8 +164,10 @@ def rgb2hsv(rgb): # -- S channel delta = arr.ptp(-1) + # Ignore warning for zero divided by zero + old_settings = np.seterr(invalid='ignore') out_s = delta / out_v - out_s[delta == 0] = 0 + out_s[delta == 0.] = 0. # -- H channel # red is max @@ -180,6 +182,9 @@ def rgb2hsv(rgb): idx = (arr[:, :, 2] == out_v) out[idx, 0] = 4. + (arr[idx, 0] - arr[idx, 1]) / delta[idx] out_h = (out[:, :, 0] / 6.) % 1. + out_h[delta == 0.] = 0. + + np.seterr(**old_settings) # -- output out[:, :, 0] = out_h