[PYTHON] Dessinez un beau cercle avec numpy

Le cercle OpenCV convient, alors dessinons un cercle plus propre. L'image d'un cercle avec un rayon de «r» est 1, à une distance de «r-1» ou moins du centre, 0 à une distance de «r» ou plus, et «r-distance» entre eux.

import math, cv2, numpy as np
# r must be greater than 0.
def circle(r):
    c = math.ceil(r - 1)
    s = c * 2 + 1
    return np.clip(r - np.sqrt(np.sum((np.stack((
        np.tile(np.arange(s), (s, 1)),
        np.repeat(np.arange(s), s).reshape((-1, s))
    )) - c) ** 2, axis=0)), 0, 1)
# r must be greater than 0. width must be greater than 0 and less than r.
def outline_circle(r, width):
    circ = circle(r)
    icirc = circle(r - width)
    ch, cw = circ.shape
    ich, icw = icirc.shape
    sx = (cw - icw) // 2
    sy = (ch - ich) // 2
    ex = sx + icw
    ey = sy + ich
    circ[sy:ey, sx:ex] = np.amax(np.stack((circ[sy:ey, sx:ex] - icirc, np.zeros((ich, icw)))), axis=0)
    return circ
def save_cv2_circle(file_name, r, thickness = -1):
    s = r * 2 + 1
    cv2.imwrite(file_name, cv2.circle(np.zeros((s, s), dtype=np.uint8), (r, r), r, 255, thickness))
def save_circle(file_name, c):
    im = (np.around(c) * 255).astype(np.uint8)
    cv2.imwrite(file_name, im)
save_circle('/tmp/circle10.jpg', circle(11))
save_cv2_circle('/tmp/cv2_circle10.jpg', 10)
save_circle('/tmp/circle10_outline.jpg', outline_circle(11, 1))
save_cv2_circle('/tmp/cv2_circle10_outline.jpg', 10, 1)

/tmp/circle10.jpg circle10.jpg

/tmp/cv2_circle10.jpg cv2_circle10.jpg

/tmp/circle10_outline.jpg circle10_outline.jpg

/tmp/cv2_circle10_outline.jpg cv2_circle10_outline.jpg

La différence est évidente.

Recommended Posts

Dessinez un beau cercle avec numpy
Dessinez un graphique avec NetworkX
Dessinez un graphique avec networkx
Tracez un graphe avec Julia + PyQtGraph (2)
Dessinez un graphique lâche avec matplotlib
Tracez un graphique avec Julia + PyQtGraph (1)
Dessinez un graphique avec Julia + PyQtGraph (3)
Dessinez un graphique avec des pandas + XlsxWriter
[Visualisation] Je veux dessiner un beau graphique avec Plotly
Dessinez un graphique avec l'interface graphique PySimple
Dessinez facilement une carte avec matplotlib.basemap
Dessinez un ensemble de Mandelbrot avec Brainf * ck
J'ai fait un jeu de vie avec Numpy
Lire le fichier de données de caractères avec numpy
Dessinez un graphique avec PyQtGraph Part 1-Drawing
Dessinez une surface plane avec un graphique 3D matplotlib
Dessinez un graphique avec des étiquettes japonaises dans Jupyter
Comment dessiner un graphique à 2 axes avec pyplot
Trouvez la position au-dessus du seuil avec NumPy
Dessinez un graphique en traitant avec Pandas groupby
[Python] Dessinez un graphe orienté avec Dash Cytoscape
Essayez de dessiner une courbe de vie avec python
[Python] Dessinez un Mickey Mouse avec une tortue [Débutant]
Dessinez un graphique avec les paramètres PyQtGraph Part 4-PlotItem
Dessinez un graphique avec PyQtGraph Partie 6 - Affichage d'une légende
J'ai fait un graphique de nombres aléatoires avec Numpy
Dessinez un graphique avec PyQtGraph Partie 5-Augmentez l'axe Y
[Python] Dessinez un diagramme de relation de balises Qiita avec NetworkX
J'ai appris Python avec une belle fille à Paiza # 02
[Python] Comment dessiner un graphique linéaire avec Matplotlib
J'ai appris Python avec une belle fille à Paiza # 01
Format A4 avec python-pptx
Extraire des éléments autres qu'un index spécifique avec Numpy
Moyenne mobile avec numpy
Dessinez de force quelque chose comme un organigramme avec Python, matplotlib
Premiers pas avec Numpy
[Python] Supprimer en spécifiant une balise avec Beautiful Soup
Apprenez avec Chemo Informatics NumPy
Concaténation de matrices avec Numpy
Code de bourdonnement avec numpy
Dessinez un graphique avec PyQtGraph Partie 2 - Paramètres de tracé détaillés
Gratter avec une belle soupe
Effectuer une analyse de régression avec NumPy
Décorer avec un décorateur
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
Étendre NumPy avec Rust
Étudier les mathématiques avec Python: dessiner un graphe sympy (scipy) avec matplotlib
Les zéros NumPy peuvent être définis même avec une taille de 0
Créons un diagramme PRML avec Python, Numpy et matplotlib.
[python] Remarques lors de la tentative d'utilisation de numpy avec Cython
Comment extraire un index autre qu'un index spécifique avec Numpy
Régression du noyau avec Numpy uniquement
Dessinez la courbe de Bézier avec Go
J'ai écrit GP avec numpy
Apprenez librosa avec un tutoriel 1
Implémentation CNN avec juste numpy
Génération artificielle de données avec numpy
Dessinez bonjour le monde avec mod_wsgi
Essayez de programmer avec un shell!