@@ -1775,28 +1775,19 @@ def blend_hsv(self, rgb, intensity, hsv_max_sat=None, hsv_max_val=None,
17751775 hsv = rgb_to_hsv (rgb [:, :, 0 :3 ])
17761776
17771777 # modify hsv values to simulate illumination.
1778- hsv [:, :, 1 ] = np .where (np .logical_and (np .abs (hsv [:, :, 1 ]) > 1.e-10 ,
1779- intensity > 0 ),
1780- ((1. - intensity ) * hsv [:, :, 1 ] +
1781- intensity * hsv_max_sat ),
1782- hsv [:, :, 1 ])
1783-
1784- hsv [:, :, 2 ] = np .where (intensity > 0 ,
1785- ((1. - intensity ) * hsv [:, :, 2 ] +
1786- intensity * hsv_max_val ),
1787- hsv [:, :, 2 ])
1788-
1789- hsv [:, :, 1 ] = np .where (np .logical_and (np .abs (hsv [:, :, 1 ]) > 1.e-10 ,
1790- intensity < 0 ),
1791- ((1. + intensity ) * hsv [:, :, 1 ] -
1792- intensity * hsv_min_sat ),
1793- hsv [:, :, 1 ])
1794- hsv [:, :, 2 ] = np .where (intensity < 0 ,
1795- ((1. + intensity ) * hsv [:, :, 2 ] -
1796- intensity * hsv_min_val ),
1797- hsv [:, :, 2 ])
1798- hsv [:, :, 1 :] = np .where (hsv [:, :, 1 :] < 0. , 0 , hsv [:, :, 1 :])
1799- hsv [:, :, 1 :] = np .where (hsv [:, :, 1 :] > 1. , 1 , hsv [:, :, 1 :])
1778+ np .putmask (hsv [:, :, 1 ], # i.e. A[mask] = B[mask].
1779+ (np .abs (hsv [:, :, 1 ]) > 1.e-10 ) & (intensity > 0 ),
1780+ (1 - intensity ) * hsv [:, :, 1 ] + intensity * hsv_max_sat )
1781+ np .putmask (hsv [:, :, 2 ],
1782+ intensity > 0 ,
1783+ (1 - intensity ) * hsv [:, :, 2 ] + intensity * hsv_max_val )
1784+ np .putmask (hsv [:, :, 1 ],
1785+ (np .abs (hsv [:, :, 1 ]) > 1.e-10 ) & (intensity < 0 ),
1786+ (1 + intensity ) * hsv [:, :, 1 ] - intensity * hsv_min_sat )
1787+ np .putmask (hsv [:, :, 2 ],
1788+ intensity < 0 ,
1789+ (1 + intensity ) * hsv [:, :, 2 ] - intensity * hsv_min_val )
1790+ np .clip (hsv [:, :, 1 :], 0 , 1 , out = hsv [:, :, 1 :])
18001791 # convert modified hsv back to rgb.
18011792 return hsv_to_rgb (hsv )
18021793
0 commit comments