Thresholding eines Bildes mit RangeSlider #

Verwenden des RangeSlider-Widgets zum Steuern des Schwellenwerts eines Bilds.

Das RangeSlider-Widget kann ähnlich wie das widgets.Slider Widget verwendet werden. Der Hauptunterschied besteht darin, dass das valAttribut von RangeSlider ein Tupel von Floats ist und nicht ein einzelnes Float.(lower val, upper val)

Ein Beispiel für die Verwendung von a zur Steuerung eines einzelnen Floats finden Sie unter Slider .Slider

Ein Beispiel für das Ausrichten von diskreten Werten finden Sie unter Ausrichten von Schiebereglern anSlider diskreten Werten.

import numpy as np
import matplotlib.pyplot as plt
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()
Histogramm der Pixelintensitäten

Verweise

In diesem Beispiel wird die Verwendung der folgenden Funktionen, Methoden, Klassen und Module gezeigt:

Galerie generiert von Sphinx-Gallery