Prenez un dessin au trait à partir d'une image couleur. Un dessin au trait est une image monochrome, non binarisée (probablement) Quand je pense à utiliser OpenCV, je l'ai lu en échelle de gris → J'ai trouvé la binarisation avec ʻadaptiveThreshold`, mais ce n'est pas très bon. Alors, vérifions comment les commentaires du sujet sont faits.
# -*- coding: utf-8 -*-
"""
Created on Fri Jan 27 11:30:12 2017
@author: khsk
"""
import numpy as np
import cv2 as c
import glob
import os
#8 Définition du quartier
neiborhood8 = np.array([[1, 1, 1],
[1, 1, 1],
[1, 1, 1]],
np.uint8)
for path in glob.glob('./images/eupho/*'):
if (os.path.basename(path) == 'Thumbs.db'):
continue
img = c.imread(path, 0) #Couleur sans 0
img_dilate = c.dilate(img, neiborhood8, iterations=1)
img_diff = c.absdiff(img, img_dilate)
img_diff_not = c.bitwise_not(img_diff)
#gray = c.cvtColor(img_diff_not, c.COLOR_RGB2GRAY)
#at = c.adaptiveThreshold(img_diff_not, 255, c.ADAPTIVE_THRESH_GAUSSIAN_C, c.THRESH_BINARY, 7, 8) #Ajustez bien int
c.imwrite(os.path.dirname(path) + '_clean_senga_color_gray/' + os.path.basename(path), img_diff_not)
c.imshow('test',img)
c.imshow('test2',img_dilate)
c.imshow('test3',img_diff)
c.imshow('test4',img_diff_not)
c.waitKey(10000)
c.destroyAllWindows()
Code de base. Commentez, changez les variables et dérangez les valeurs int. Il semble y avoir une expansion d'environ 4, mais si vous voulez être plus clair, j'ai pensé que cela pourrait être environ 8 de plus. Cependant, sauf indication contraire, la lecture est en échelle de gris.
Je me souviens avoir vu des noms tels que Euphonium dans mes recherches sur l'apprentissage automatique, mais j'ai oublié les détails. Est-ce idéal pour l'apprentissage automatique? Le faites-vous en l'utilisant? Cela n'a rien à voir avec le dessin au trait. Probablement.
ʻAdaptive Threshold` uniquement
Les lignes claquent et c'est mieux, mais parfois il y a des points noirs comme la poussière
J'ai été surpris parce que c'était trop beau. En parlant de points préoccupants, il y a des nuances et des lignes pâles apparaissent souvent.
J'ai augmenté le nombre d'extensions de sorte que si la différence devient plus épaisse, même une ligne fine apparaîtra clairement, La sensation d'étrangeté se propage simplement en épaississant les lignes sombres. Cela peut encore être bon si c'est deux fois.
Puisque le tweet de référence était en niveaux de gris à la fin, j'ai essayé de traiter la première lecture en couleur. (1 extension) Je pense que c'est une erreur. Le dessin au trait de couleur a un goût.
C'est un beau dessin au trait, mais je pensais que ce n'était pas binaire, donc je l'ai fait binaire à la fin. On a l'impression que la quantité d'informations a été réduite grâce à la binarisation.
Jusque-là, j'ai remarqué que l'expansion semble être appliquée à l'image binarisée, alors suivez la procédure de lecture → binarisation → expansion → différence. La différence ne peut plus être exprimée en mots.
Je pense que ça a été décent. Je ne sais pas ce qu'est un "bon dessin au trait" en premier lieu.
Je pensais créer un jeu de données, mais j'ai envie de créer des données pour l'apprentissage automatique avec l'apprentissage automatique. [Le dessin au trait approximatif a déjà été étudié], donc des lignes ambiguës peuvent être complétées.
Donc, je ne suis pas entré dans l'apprentissage automatique, mais quand je me demandais si la préparation des données avait fait un pas en avant [parce que le modèle entraîné a été transformé en un service Web au lieu d'être publié], il est certainement préférable de jouer ici. agréable.
La couleur des cheveux correspond bien.
[Traitement de l'expansion des pixels (dilatation) et traitement de la contraction (érosion) en Python OpenCV3 (avec une petite explication) - de umentu import stupid]: https://www.blog.umentu.work/python-opencv3%E3%81%A7 % E7% 94% BB% E7% B4% A0% E3% 81% AE% E8% 86% A8% E5% BC% B5% E5% 87% A6% E7% 90% 86dilation% E3% 81% A8% E5 % 8F% 8E% E7% B8% AE% E5% 87% A6% E7% 90% 86erosion-% E3% 81% A1% E3% 82% 87% E3% 81% A3% E3% 81% A8% E8% A7% A3 /