Bildskalierung mit einem RangeSlider#

Verwendung des RangeSlider-Widgets zur Steuerung der Schwellenwertbildung eines Bildes.

Das RangeSlider-Widget kann ähnlich wie das widgets.Slider-Widget verwendet werden. Der Hauptunterschied besteht darin, dass das val-Attribut von RangeSlider ein Tupel von Gleitkommazahlen (unterer Wert, oberer Wert) anstelle einer einzelnen Gleitkommazahl ist.

Siehe Slider für ein Beispiel zur Verwendung eines Slider zur Steuerung einer einzelnen Gleitkommazahl.

Siehe Slider an diskreten Werten ausrichten für ein Beispiel, bei dem der Slider an diskrete Werte gebunden wird.

import matplotlib.pyplot as plt
import numpy as np

from matplotlib.widgets import RangeSlider

# generate a fake image
np.random.seed(19680801)
N = 128
img = np.random.randn(N, N)

fig, axs = plt.subplots(1, 2, figsize=(10, 5))
fig.subplots_adjust(bottom=0.25)

im = axs[0].imshow(img)
axs[1].hist(img.flatten(), bins='auto')
axs[1].set_title('Histogram of pixel intensities')

# Create the RangeSlider
slider_ax = fig.add_axes([0.20, 0.1, 0.60, 0.03])
slider = RangeSlider(slider_ax, "Threshold", img.min(), img.max())

# Create the Vertical lines on the histogram
lower_limit_line = axs[1].axvline(slider.val[0], color='k')
upper_limit_line = axs[1].axvline(slider.val[1], color='k')


def update(val):
    # The val passed to a callback by the RangeSlider will
    # be a tuple of (min, max)

    # Update the image's colormap
    im.norm.vmin = val[0]
    im.norm.vmax = val[1]

    # Update the position of the vertical lines
    lower_limit_line.set_xdata([val[0], val[0]])
    upper_limit_line.set_xdata([val[1], val[1]])

    # Redraw the figure to ensure it updates
    fig.canvas.draw_idle()


slider.on_changed(update)
plt.show()
Histogram of pixel intensities

Referenzen

Die Verwendung der folgenden Funktionen, Methoden, Klassen und Module wird in diesem Beispiel gezeigt

Gesamtlaufzeit des Skripts: (0 Minuten 1,392 Sekunden)

Galerie generiert von Sphinx-Gallery