[PYTHON] Zeichne einen schönen Kreis mit Numpy

Der OpenCV-Kreis ist geeignet, also zeichnen wir einen saubereren Kreis. Das Bild eines Kreises mit einem Radius von "r" ist 1 in einem Abstand von "r-1" oder weniger vom Zentrum, 0 in einem Abstand von "r" oder mehr und "r-Abstand" zwischen ihnen.

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

Der Unterschied ist offensichtlich.

Recommended Posts

Zeichne einen schönen Kreis mit Numpy
Zeichnen Sie mit NetworkX ein Diagramm
Zeichnen Sie mit networkx ein Diagramm
Zeichne ein Diagramm mit Julia + PyQtGraph (2)
Zeichnen Sie mit matplotlib ein loses Diagramm
Zeichne ein Diagramm mit Julia + PyQtGraph (1)
Zeichne ein Diagramm mit Julia + PyQtGraph (3)
Zeichnen Sie ein Diagramm mit Pandas + XlsxWriter
[Visualisierung] Ich möchte mit Plotly ein schönes Diagramm zeichnen
Zeichnen Sie ein Diagramm mit der PySimple-Benutzeroberfläche
Zeichnen Sie einfach eine Karte mit matplotlib.basemap
Zeichnen Sie ein Mandelbrot-Set mit Brainf * ck
Ich habe ein Lebensspiel mit Numpy gemacht
Zeichendatendatei mit numpy lesen
Zeichnen Sie ein Diagramm mit PyQtGraph Part 1-Drawing
Zeichnen Sie eine flache Oberfläche mit einem Matplotlib-3D-Diagramm
Zeichnen Sie in Jupyter ein Diagramm mit japanischen Beschriftungen
So zeichnen Sie ein 2-Achsen-Diagramm mit Pyplot
Finden Sie mit NumPy die Position über dem Schwellenwert
Zeichnen Sie ein Diagramm, indem Sie es mit Pandas groupby verarbeiten
[Python] Zeichnen Sie mit Dash Cytoscape ein gerichtetes Diagramm
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
[Python] Zeichne eine Mickey Mouse mit Turtle [Anfänger]
Zeichnen Sie ein Diagramm mit den Einstellungen von PyQtGraph Part 4-PlotItem
Zeichnen Sie ein Diagramm mit PyQtGraph Teil 6 - Anzeigen einer Legende
Ich habe mit Numpy eine Grafik mit Zufallszahlen erstellt
Zeichnen Sie mit PyQtGraph Teil 5 ein Diagramm. Erhöhen Sie die Y-Achse
[Python] Zeichnen Sie ein Qiita-Tag-Beziehungsdiagramm mit NetworkX
Ich habe Python mit einem schönen Mädchen in Paiza # 02 gelernt
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
Ich habe Python mit einem schönen Mädchen in Paiza # 01 gelernt
A4 Größe mit Python-Pptx
Extrahieren Sie andere Elemente als einen bestimmten Index mit Numpy
Gleitender Durchschnitt mit Numpy
Zeichnen Sie gewaltsam so etwas wie ein Flussdiagramm mit Python, matplotlib
Erste Schritte mit Numpy
[Python] Löschen Sie, indem Sie ein Tag mit Beautiful Soup angeben
Lernen Sie mit Chemo Informatics NumPy
Verkettung von Matrizen mit Numpy
Summencode mit Numpy
Zeichnen Sie ein Diagramm mit PyQtGraph Teil 2 - Detaillierte Ploteinstellungen
Kratzen mit schöner Suppe
Führen Sie eine Regressionsanalyse mit NumPy durch
Mit Dekorateur dekorieren
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
Erweitern Sie NumPy mit Rust
Mathematik mit Python studieren: Zeichnen Sie mit matplotlib ein Sympy-Diagramm (Scipy-Diagramm)
NumPy-Nullen können auch bei einer Größe von 0 definiert werden
Lassen Sie uns ein PRML-Diagramm mit Python, Numpy und matplotlib erstellen.
[Python] Hinweise beim Versuch, Numpy mit Cython zu verwenden
So extrahieren Sie mit Numpy einen anderen als einen bestimmten Index
Kernel-Regression nur mit Numpy
Zeichnen Sie die Bezier-Kurve mit Go
Ich habe GP mit Numpy geschrieben
Lernen Sie Librosa mit einem Tutorial 1
CNN-Implementierung mit nur Numpy
Künstliche Datengenerierung mit Numpy
Zeichne Hallo Welt mit mod_wsgi
Versuchen Sie, mit einer Shell zu programmieren!