[PYTHON] Ich habe ein Punktbild des Bildes von Irasutoya gemacht. (Teil 2)

Background Es geht nicht um die direkte Verbesserung des Punktbildes, sondern ich habe das Bild von Irasutoya zu einem Punktbild gemacht. (Teil1) konnte das umgebende Bild nicht in Punkte konvertiert werden, daher werde ich die Lösung erläutern.

neko16.png

Method

Bereiten Sie als Methode ein Bild vor, das doppelt so breit und hoch ist wie das Originalbild. Das Bild zeigt ein Sandwich auf einem Wrap: Hamburger:


def wrapMat(height, width):
	dst = np.zeros((height, width, 4), np.uint8)
	dst[:] = tuple((0,255,0,128))
	return dst

if __name__ == "__main__":
	#Das Originalbild
	mat = cv2.imread(path,cv2.IMREAD_UNCHANGED)

	#Falten Sie die Breite und Höhe in zwei Hälften
	top = int(mat.shape[0] * 0.5)
	left = int(mat.shape[1] * 0.5)
	wrap = wrapMat(top*4,left*4)

	cv2.imwrite("mono_wrap.png ", wrap)

mono_wrap.png

Es ist vom Aussehen her leicht zu verstehen und auf "G = 255" und "α (Transparenz) = 128" eingestellt.

Platzieren Sie als Nächstes das Bild, für das Sie ein Punktbild erstellen möchten, in der Mitte.

	wrap[top:top + mat.shape[0], left:left + mat.shape[1]] = mat
	cv2.imwrite("wrap.png ", wrap)

wrap.png

Konvertieren Sie es dann in ein Punktbild. output.png Um ihn herum wird eine graue Linie erzeugt, aber ich denke, das liegt daran, dass der Durchschnittswert der Farbanordnung und der transparenten Farbe des Umbruchbilds auf der Grenzlinie berechnet wurde.

Schneiden Sie dieses Bild dann auf die Größe des Originalbilds.

cv2.imwrite("trim.png ",wrap[top:top + mat.shape[0], left:left + mat.shape[1]])

trim.png

Ich habe mich gefragt, ob eine graue Linie am Rand bleiben würde, aber ich konnte wie erwartet ausgeben. Wenn es angezeigt wird, ist es kein Problem, wenn Sie die Farbanordnung des Umbruchbilds auf "(R, G, B, A) = (0,0,0,0)" setzen.

Development

Der ganze Code.

import cv2
import numpy as np
import sys


def wrapMat(height, width):
    dst = np.zeros((height, width, 4), np.uint8)
    dst[:] = tuple((0, 255, 0, 128))
    return dst


def convertReduceColor(src):
    thresholds = [42, 127, 212]
    range_color = [0, 85, 170, 255]

    count = 0
    for th in thresholds:
        if src <= th:
            break
        count += 1
    return range_color[count]


def main():
    CELL_SIZE = 16

    path = sys.argv[1]
    mat = cv2.imread(path, cv2.IMREAD_UNCHANGED)

    top = int(mat.shape[0] * 0.5)
    left = int(mat.shape[1] * 0.5)
    #Wrap-Image-Erstellung
    wrap = wrapMat(top * 4, left * 4)
    #Platzieren Sie das Originalbild
    wrap[top:top + mat.shape[0], left:left + mat.shape[1]] = mat

    #Punktbilderstellung
    height, width = wrap.shape[:-1]
    for w in range(width // CELL_SIZE - 1):
        for h in range(height // CELL_SIZE - 1):
            c = np.mean(
                np.mean(
                    wrap[h * CELL_SIZE:(h + 1) * CELL_SIZE,
                         w * CELL_SIZE:(w + 1) * CELL_SIZE], axis=0
                ),
                axis=0
            )
            wrap[h * CELL_SIZE:(h + 1) * CELL_SIZE, w * CELL_SIZE:(w + 1) * CELL_SIZE] = tuple(
                [convertReduceColor(c[0]), convertReduceColor(c[1]), convertReduceColor(c[2]), c[3]])

    #Trimmen
    trim = wrap[top:top + mat.shape[0], left:left + mat.shape[1]]
    cv2.imwrite("trim.png ", trim)


if __name__ == "__main__":
    main()

Future Lassen Sie uns das nächste Mal darüber nachdenken, wie Sie ein monochromes Bild in vier Farben umwandeln können.

Reference

Recommended Posts

Ich habe ein Punktbild des Bildes von Irasutoya gemacht. (Teil 1)
Ich habe ein Punktbild des Bildes von Irasutoya gemacht. (Teil 2)
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Ich habe eine Funktion zum Trimmen des Bildes von Python openCV erstellt. Verwenden Sie sie daher bitte.
Ich habe einen schlaffen Bot gemacht, der mich über die Temperatur informiert
[Kaggle] Ich habe mit dem Titanic-Tutorial eine Sammlung von Problemen erstellt
Ich habe einen Linienbot erstellt, der das Geschlecht und das Alter einer Person anhand des Bildes errät
Ich habe einen Kalender erstellt, der den Verteilungsplan von Vtuber automatisch aktualisiert
Ich habe eine Art einfaches Bildverarbeitungswerkzeug in der Sprache Go erstellt.
Ich habe GAN mit Keras gemacht, also habe ich ein Video des Lernprozesses gemacht.
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe einen Fehler beim Abrufen der Hierarchie mit MultiIndex von Pandas gemacht
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
[Python + OpenCV] Malen Sie den transparenten Teil des Bildes weiß
Ich habe ein Tool erstellt, um die Ausführungszeit von cron zu schätzen (+ PyPI-Debüt)
Ich habe einen LINE BOT erstellt, der mithilfe der Flickr-API ein Bild von Reis-Terroristen zurückgibt
Ich habe einen Appdo-Befehl erstellt, um Befehle im Kontext der App auszuführen
Ich habe ein Tool zum automatischen Sichern der Metadaten der Salesforce-Organisation erstellt
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
Schneiden Sie einen Teil der Zeichenfolge mit einem Python-Slice aus
Ich habe ein Schwellenwertänderungsfeld für Peppers Dialog erstellt
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe eine Twitter-App erstellt, die die Zeichen der Vorverbindung mit Heroku entschlüsselt (Fehler).
[Python / C] Ich habe versucht, ein Gerät zu erstellen, das den Bildschirm eines PCs drahtlos aus der Ferne scrollt.
Ich habe einen Kalender erstellt, der den Verteilungsplan von Vtuber automatisch aktualisiert (Google Kalender Edition).
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht, eine Rangliste zu erstellen, indem ich das Mitgliederteam der Organisation abgekratzt habe
Ich habe ein Tool erstellt, um die Antwortlinks von OpenAI Gym auf einmal zu erhalten
Punkt entsprechend dem Bild
Zusammenfassung des mit einer Geschwindigkeit von einer Sekunde durchgeführten Bildcrawls
Ich habe ein VGG16-Modell mit TensorFlow gemacht (unterwegs)
Ich habe ein wenig versucht, das Verhalten der Zip-Funktion
Ich habe einen Python-Text gemacht
Verändert TensorFlow das Bild des tiefen Lernens? Was ich dachte, nachdem ich ein wenig berührt hatte
Ich habe einen Zwietrachtbot gemacht
Das Bild ist Namekuji
Ich habe ein Skript geschrieben, das das Bild in zwei Teile teilt
Ich habe versucht, das Bild des Bogenschießen-Bewertungsbuchs (eine Broschüre, in der die Ergebnisse von Treffern aufgezeichnet werden) zu analysieren. (Google Colaboratory)
Eine Methode zum Konvertieren des Bildstils unter Beibehaltung der Farbe
Ich habe versucht, ein Programm zu erstellen, um die Fehlersuche von Saiseriya zu lösen (Hinweis)
Finden Sie den optimalen Wert der Funktion mit einem genetischen Algorithmus (Teil 2)
[Statistik] Erfassen Sie das Bild der zentralen Polbegrenzungstheorie mit einem Diagramm
Ich habe ein Programm erstellt, das die Fehlersuche in Sekunden löst
Ich habe versucht, das SD-Boot-Image von LicheePi Nano zu erstellen
[Einführung in StyleGAN] Ich habe mit "The Life of a Man" ♬ gespielt
Ich habe viele Dateien für die RDP-Verbindung mit Python erstellt
[Los] Erstellen Sie einen CLI-Befehl, um die Erweiterung des Bildes zu ändern
Ich brachte AI dazu, über die Texte von Genshi Yonezu nachzudenken (Vorverarbeitung)
[Python] Ich habe einen Bildbetrachter mit einer einfachen Sortierfunktion erstellt.
Ich habe mit Kaggle Start Book basierend auf Kaggle studiert [Teil 1]
Zählen Sie mit NetworkX den maximal verketteten Teil eines zufälligen Diagramms
Ich habe die Grundoperation von Pandas im Jupyter Lab geschrieben (Teil 1)
Ich habe versucht, ein Standbild aus dem Video auszuschneiden
Ich habe versucht, ein Gerüstwerkzeug für Python Web Framework Bottle zu erstellen
Ich habe versucht, den DNN-Teil von OpenPose mit Chainer-CPU auszuführen