Rileva e misura oggetti circolari in un'immagine
Questo esempio mostra come leggere un'immagine da un sito web e contare il numero di oggetti circolari nell'immagine utilizzando ThingSpeak™ e Image Processing Toolbox™. Il valore calcolato viene memorizzato in un canale ThingSpeak .
Leggi l'immagine dall'URL
Utilizza webread
per importare l'immagine da un URL pubblico. I file di immagine contengono molti dati, è necessario solo un sottoinsieme dei dati di immagine per contare le monete. Per ridurre i tempi di elaborazione, è possibile ridimensionare l'immagine. Utilizzare imresize
per tagliare l'immagine al 30% delle sue dimensioni originali.
rgb = webread('https://www.publicdomainpictures.net/pictures/40000/velka/british-coins.jpg');
rgb = imresize(rgb, 0.3);
imshow(rgb)
Regola le impostazioni di sensibilità e conteggio cerchi
Oltre ad avere più cerchi da rilevare, l'immagine contiene monete di diversi colori, che hanno un contrasto diverso rispetto allo sfondo. Le monete color ottone hanno un forte contrasto con questo sfondo. Le monete d'argento hanno un colore molto più vicino allo sfondo. Usa imfindcircles
per contare le monete.
1. Per impostazione predefinita, imfindcircles
trova oggetti circolari più luminosi dello sfondo. Imposta il suo parametro 'ObjectPolarity'
su 'dark'
per cercare i cerchi di colore scuro.
2. La funzione imfindcircles
ha un parametro 'Sensitivity'
che puoi utilizzare per controllare la soglia interna durante la ricerca di oggetti circolari. Imposta 'Sensitivity'
' su 0,92.
3. Chiama imfindcircles
su questa immagine con il raggio di ricerca di [80 130] pixel. La lunghezza del vettore dei centri è uguale al numero di cerchi trovati.
[centers, radii] = imfindcircles(rgb,[80 130],'ObjectPolarity','dark','Sensitivity',0.92); numCircles = length(centers)
numCircles = 5
Memorizza i risultati in un canale ThingSpeak
Puoi archiviare e tenere traccia del contenuto di un'immagine dinamica con questo esempio e un canale ThingSpeak . Scrivere il numero di cerchi in un canale ThingSpeak specificato da channelID. Cambia channelID
come ID del tuo canale e specifica la chiave API di scrittura per il tuo canale con writeAPIKey
.
channelID=17504; writeAPIKey='23ZLGOBBU9TWHG2H'; thingSpeakWrite(channelID, numCircles, 'Writekey', writeAPIKey);
Vedi anche
imshow
(MATLAB) | imresize
(MATLAB) | imfindcircles
(Image Processing Toolbox)
Argomenti complementari
- Get Started with Image Processing Toolbox (Image Processing Toolbox)