[Diverses analyses d'images avec plotly] Visualisation dynamique avec plotly [python, image]

Analysons l'image facilement avec plotly

dd.gif

environnement

python==3.8 plotly==4.10.0 scikit-image==0.17.2 requests==2.24.0 Pillow==7.2.0 matplotlib==3.3.2

Gestion des images courantes

J'utiliserai d'abord un oreiller

import matplotlib.pyplot as plt
from PIL import Image
import requests
import io

url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Crab_Nebula.jpg/240px-Crab_Nebula.jpg'
img = Image.open(io.BytesIO(requests.get(url).content))

plt.figure(figsize=(5,5))
plt.subplot(111)
plt.imshow(img)

image.png

J'ai pu afficher l'image avec le matplot habituel Faisons en noir et blanc

gray_img = img.convert('L')

plt.figure(figsize=(5,5))
plt.subplot(111)
plt.imshow(gray_img)

l'objet image peut être en noir et blanc en utilisant convert

Traitement d'image à l'aide de skimage et de l'intrigue

La bonne chose à propos de l'affichage d'images avec intrigue est que vous pouvez zoomer, etc.

import plotly.express as px
from skimage import io
img_sk = io.imread('https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Crab_Nebula.jpg/240px-Crab_Nebula.jpg')
fig = px.imshow(img_sk)
fig.show()

dd.gif

Vous pouvez également gérer les images lues avec un oreiller

fig = px.imshow(gray_img, color_continuous_scale='gray')
fig.show()

image.png

Créer des lignes de contour dans l'image

Vous pouvez ajouter des lignes de contour à la luminosité de l'image

Tracé de contour qui colore la valeur de Z Surveillez les valeurs du début à la fin Spécifiez l'espacement des courbes de niveau avec la taille En rendant la fin et la taille identiques, vous pouvez extraire la partie qui devient la valeur spécifiée En d'autres termes, il peut être utilisé pour l'extraction de contours, etc.

import plotly.graph_objects as go
fig = px.imshow(gray_img, color_continuous_scale='gray')
fig.add_trace(go.Contour(z=gray_img, showscale=True,
                         contours=dict(start=0, end=30, size=30,coloring='lines'),line_width=1))

fig.show()

image.png

import plotly.express as px
import plotly.graph_objects as go
from skimage import data
img_camera = data.camera()
fig = px.imshow(img_camera, color_continuous_scale='gray')

fig.add_trace(go.Contour(z=img_camera, showscale=False,
                         contours=dict(start=0, end=70, size=70, coloring='lines'),
                         line_width=2))
fig.show()

image.png

Créer un histogramme de canal de couleur à partir de tracé

from plotly.subplots import make_subplots
from skimage import data

img_sk.shape

#(240, 240, 3)

plt.imshow(img_sk)


img_r = img_sk.copy()
img_r[:, :, 1] = 0
img_r[:, :, 2] = 0
plt.imshow(img_r)

img_g = img_sk.copy()
img_g[:, :, 0] = 0
img_g[:, :, 2] = 0
plt.imshow(img_g)

img_b = img_sk.copy()
img_b[:, :, 0] = 0
img_b[:, :, 1] = 0
plt.imshow(img_b)

image.png

image.png

image.png

image.png

Non nul à hist

ff=go.Figure()
ff.add_trace(go.Histogram(x=img_r.flatten()[img_r.flatten()!=0],marker_color='red',name='red'))
ff.add_trace(go.Histogram(x=img_g.flatten()[img_g.flatten()!=0],marker_color='green',name='green'))
ff.add_trace(go.Histogram(x=img_b.flatten()[img_b.flatten()!=0],marker_color='blue',name='blue'))
ff.update_layout(barmode='overlay')
ff.update_traces(opacity=0.3)
ff.update_layout(height=400)

ff.show()

image.png

Lors de l'expansion, il semble que 10 ou moins est le principal, alors vérifiez la distribution de 10 ou plus

ff=go.Figure()
ff.add_trace(go.Histogram(x=img_r.flatten()[img_r.flatten()>10],marker_color='red',name='red'))
ff.add_trace(go.Histogram(x=img_g.flatten()[img_g.flatten()>10],marker_color='green',name='green'))
ff.add_trace(go.Histogram(x=img_b.flatten()[img_b.flatten()>10],marker_color='blue',name='blue'))
ff.update_layout(barmode='overlay')
ff.update_traces(opacity=0.3)
ff.update_layout(height=400)

ff.show()

image.png

Ça ressemble à ça quand il est bien divisé

image.png

La confirmation pour le noir et blanc est la suivante

from skimage.color import rgb2gray

gray_img = rgb2gray(img_sk)


ff=go.Figure()
ff.add_trace(go.Histogram(x=gray_img.flatten()[gray_img.flatten()!=0],marker_color='pink',name='gray'))
ff.update_layout(barmode='overlay')
ff.update_traces(opacity=0.8)
ff.update_layout(height=400)

ff.show()

image.png

ff=go.Figure()
ff.add_trace(go.Histogram(x=gray_img.flatten()[gray_img.flatten()>0.1],marker_color='pink',name='gray'))
ff.update_layout(barmode='overlay')
ff.update_traces(opacity=0.8)
ff.update_layout(height=400)

ff.show()

image.png

À propos, comment afficher l'image dans la figure

Appel à toute la surface du graphique

import plotly.express as px
fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])

fig.add_layout_image(
        dict(
            source="https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Crab_Nebula.jpg/240px-Crab_Nebula.jpg ",
            xref="x",
            yref="y",
            x=0,
            y=16,
            sizex=4,
            sizey=15,
            sizing="stretch")
)

fig.update_xaxes(title_text="picture No")
fig.update_yaxes(title_text="view par day", hoverformat=".3f")

fig.show()

image.png

Appelez doucement sur le dos (ci-dessous)

import plotly.express as px
fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])

fig.add_layout_image(
        dict(
            source="https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Crab_Nebula.jpg/240px-Crab_Nebula.jpg ",
            xref="x",
            yref="y",
            x=0,
            y=16,
            sizex=4,
            sizey=15,
            sizing="stretch",
            opacity=0.5,
            layer="below")
)

fig.update_xaxes(title_text="picture No")
fig.update_yaxes(title_text="view par day", hoverformat=".3f")

fig.show()

image.png

Réduisez-le et ajoutez un bâton ou mettez du texte

import plotly.express as px
fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])

fig.add_layout_image(
        dict(
            source="https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Crab_Nebula.jpg/240px-Crab_Nebula.jpg ",
            xref="x",
            yref="y",
            x=1.68,
            y=16,
            sizex=3,
            sizey=3)
)

fig.update_layout(
    annotations=[
        dict(
            x=0.5,
            y=0.8,
            xref="paper",
            yref="paper",
            showarrow=True,
            arrowhead=0,
            opacity=0.5,
            ax=190,
            ay=100,
        )#,
#        dict(x=,y=,xref="paper",yref="paper",showarrow=True,arrowhead=0,opacity=0.5,ax=,ay=,)
    ]
)

fig.update_xaxes(title_text="picture No")
fig.update_yaxes(title_text="view par day", hoverformat=".3f")

fig.show()

L'image de mise en page de l'image est conforme à la position du tracé L'axe x, y du tracé correspond à la position supérieure gauche x, y de l'image

La barre est 0,0 en bas à gauche de l'image Le centre est 0,5,0,5 ax et ay représentent la longueur de la barre et s'étendent des positions x et y spécifiées jusqu'à la position où le vecteur des barres étendu dans la direction de l'axe x et la direction de l'axe y est combiné.

image.png

c'est tout

N'importe quelle théorie amusante si vous pouvez la déplacer pour le moment

Recommended Posts

[Diverses analyses d'images avec plotly] Visualisation dynamique avec plotly [python, image]
[Écrire sur la carte avec plotly] Visualisation dynamique avec plotly [python]
[Série chronologique avec plotly] Visualisation dynamique avec plotly [python, cours boursier]
Analyse de données à partir de python (visualisation de données 1)
Analyse de données à partir de python (visualisation de données 2)
[Parlez de la structure de dessin de plotly] Visualisation dynamique avec plotly [python]
Analyse de données avec python 2
Analyse d'images médicales avec Python 1 (Lire une image IRM avec SimpleITK)
Divers outils de visualisation Python
Analyse vocale par python
Traitement d'image avec Python
Analyse vocale par python
Analyse dynamique par Valgrind
Analyse de données avec Python
Visualisation de la logistique avec Python
[OpenCV / Python] J'ai essayé l'analyse d'image de cellules avec OpenCV
[Python] Analyse morphologique avec MeCab
Édition d'image avec python OpenCV
Analyse des émotions par Python (word2vec)
Tri des fichiers image avec Python (2)
Tri des fichiers image avec Python (3)
Traitement d'image avec Python (partie 1)
Tweet avec image en Python
Tri des fichiers image avec Python
Analyse de squelette planaire avec Python
Manipulez diverses bases de données avec Python
Analyse morphologique japonaise avec Python
Traitement d'image avec Python (3)
Analyse des secousses musculaires avec Python
[Python] Traitement d'image avec scicit-image
Analyse pratique des composants principaux avec PyCaret [Normalisation + visualisation (tracé)] Mémo
Découpez une image avec python
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
Analyse de la structure du squelette en trois dimensions avec Python
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
Analyse d'impédance (EIS) avec python [impedance.py]
Proxy dynamique avec python, ruby, PHP
Text mining avec Python ① Analyse morphologique
Traitement d'image avec la binarisation Python 100 knocks # 3
Faisons du scraping d'images avec Python
Visualisez facilement vos données avec Python seaborn.
Trouver la similitude d'image avec Python + OpenCV
100 traitement d'image par Python Knock # 2 Échelle de gris
Introduction à l'analyse d'image opencv python
Analyse de régression logistique Self-made avec python
Envoyer l'image avec python et enregistrer avec php
Génération d'images dégradées avec Python [1] | np.linspace
Obtenez des commandes PowerShell à partir d'un site d'analyse dynamique de logiciels malveillants avec BeautifulSoup + Python
Traitement d'image par Python 100 knock # 4 Binarisation Otsu (méthode d'analyse de discrimination)
[Indicateur de capacité, diagramme de Gantt, interface utilisateur] Visualisation tracé dynamique [python, affichage de jauge, diagramme de Gantt]
Bases du traitement d'images binarisées par Python
Traitement d'image par Python 100 knock # 10 filtre médian
Application de Python: visualisation de données Partie 3: divers graphiques
mail html avec image à envoyer avec python
[Didacticiel d'analyse Python en base de données avec SQL Server 2017]
Analyse bidimensionnelle du flux de perméation saturée-insaturée avec Python
Créez une image factice avec Python + PIL.
100 traitement d'image avec Python Knock # 8 Max Pooling
Apprentissage automatique avec python (2) Analyse de régression simple
Introduction au remplissage d'image Python Remplissage d'image à l'aide d'ImageDataGenerator