[PYTHON] J'ai fait une image ponctuelle de l'image d'Irasutoya. (partie 2)

Background Il ne s'agit pas de l'amélioration directe de l'image de points, mais j'ai transformé l'image d'Irasutoya en une image de points. (part1), l'image environnante n'a pas pu être convertie en points, je vais donc expliquer la solution.

neko16.png

Method

En guise de méthode, préparez une image qui est deux fois la largeur et la hauteur de l'image d'origine. L'image est une image de mettre un sandwich sur un 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__":
	#L'image originale
	mat = cv2.imread(path,cv2.IMREAD_UNCHANGED)

	#Pliez la largeur et la hauteur en deux
	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

Il est facile à comprendre par son apparence et il est réglé sur «G = 255» et «α (transparence) = 128».

Ensuite, placez l'image que vous souhaitez créer une image à points au centre.

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

wrap.png

Ensuite, convertissez-le en une image à points. output.png Des lignes grises sont générées autour d'elle, mais je pense que c'est parce que la valeur moyenne de la disposition des couleurs et de la couleur transparente de l'image d'habillage a été calculée sur la ligne de démarcation.

Puis découpez cette image à la taille de l'image d'origine.

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

trim.png

Je me demandais si une ligne grise resterait sur le bord, mais j'ai pu sortir comme prévu. S'il est affiché, il n'y a pas de problème si vous définissez la disposition des couleurs de l'image d'habillage sur (R, V, B, A) = (0,0,0,0).

Development

L'ensemble du 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)
    #Création d'image enveloppante
    wrap = wrapMat(top * 4, left * 4)
    #Placez l'image d'origine
    wrap[top:top + mat.shape[0], left:left + mat.shape[1]] = mat

    #Création d'images par points
    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]])

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


if __name__ == "__main__":
    main()

Future La prochaine fois, réfléchissons à la façon de créer une image monochrome en quatre couleurs.

Reference

Recommended Posts

J'ai fait une image ponctuelle de l'image d'Irasutoya. (partie 1)
J'ai fait une image ponctuelle de l'image d'Irasutoya. (partie 2)
J'ai fait une fonction pour vérifier le modèle de DCGAN
J'ai créé une fonction pour découper l'image de python openCV, alors veuillez l'utiliser.
J'ai fait un bot mou qui m'informe de la température
[Kaggle] J'ai fait une collection de problèmes en utilisant le didacticiel Titanic
J'ai créé un robot Line qui devine le sexe et l'âge d'une personne à partir de l'image
J'ai fait un calendrier qui met à jour automatiquement le calendrier de distribution de Vtuber
J'ai fait une sorte d'outil de traitement d'image simple en langage Go.
J'ai fait GAN avec Keras, donc j'ai fait une vidéo du processus d'apprentissage.
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
J'ai fait une erreur en récupérant la hiérarchie avec MultiIndex of pandas
J'ai créé une fonction pour voir le mouvement d'un tableau à deux dimensions (Python)
J'ai essayé de corriger la forme trapézoïdale de l'image
J'ai essayé d'utiliser le filtre d'image d'OpenCV
[Python + OpenCV] Peignez la partie transparente de l'image en blanc
J'ai fait un outil pour estimer le temps d'exécution de cron (+ débuts de PyPI)
J'ai créé un LINE BOT qui renvoie une image de riz terroriste en utilisant l'API Flickr
J'ai créé une commande appdo pour exécuter des commandes dans le contexte de l'application
J'ai créé un outil pour sauvegarder automatiquement les métadonnées de l'organisation Salesforce
J'ai fait un script pour enregistrer la fenêtre active en utilisant win32gui de Python
Découpez une partie de la chaîne à l'aide d'une tranche Python
J'ai créé une boîte de changement de seuil pour Pepper's Dialog
J'ai essayé d'effacer la partie négative de Meros
J'ai créé une application Twitter qui décrypte les caractères de pré-connexion avec heroku (échec)
[Python / C] J'ai créé un appareil qui fait défiler sans fil l'écran d'un PC à distance.
J'ai fait un calendrier qui met à jour automatiquement le calendrier de distribution de Vtuber (édition Google Calendar)
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
J'ai essayé de faire un classement en grattant l'équipe des membres de l'organisation
J'ai créé un outil pour obtenir les liens de réponse d'OpenAI Gym en même temps
Point selon l'image
Résumé de l'exploration d'image effectuée à la vitesse d'une seconde
J'ai fait un modèle VGG16 en utilisant TensorFlow (en chemin)
J'ai essayé un peu le comportement de la fonction zip
J'ai fait un texte Python
TensorFlow change-t-il l'image de l'apprentissage profond? Ce que j'ai pensé après avoir touché un peu
J'ai fait un robot discord
L'image est Namekuji
J'ai écrit un script qui divise l'image en deux
J'ai essayé l'analyse d'image du livre de score de tir à l'arc (un livret qui enregistre les résultats des coups). (Google Colaboratory)
Une méthode de conversion du style d'une image tout en préservant la couleur
J'ai essayé de faire un programme pour résoudre (indice) la recherche d'erreur de Saiseriya
Trouvez la valeur optimale de la fonction à l'aide d'un algorithme génétique (partie 2)
[Statistiques] Saisir l'image de la théorie de la limitation du pôle central avec un graphe
J'ai créé un programme qui résout la recherche d'erreur en quelques secondes
J'ai essayé de créer l'image de démarrage SD de LicheePi Nano
[Introduction à StyleGAN] J'ai joué avec "The Life of a Man" ♬
J'ai créé beaucoup de fichiers pour la connexion RDP avec Python
[Go] Créez une commande CLI pour changer l'extension de l'image
J'ai fait réfléchir AI aux paroles de Genshi Yonezu (pré-traitement)
[Python] J'ai créé une visionneuse d'images avec une fonction de tri simple.
J'ai étudié avec Kaggle Start Book basé sur kaggle [Partie 1]
Compter la partie concaténée maximale d'un graphe aléatoire avec NetworkX
J'ai écrit le fonctionnement de base de Pandas dans Jupyter Lab (partie 1)
J'ai essayé de couper une image fixe de la vidéo
J'ai essayé de créer un outil d'échafaudage pour le framework Web Python Bottle
J'ai essayé d'exécuter la partie DNN d'OpenPose avec le processeur Chainer