Dessinez une illusion d'aquarelle avec détection des contours en Python3 et openCV3

environnement

windows8.1  python3.4.4  opencv3.1.0

Aperçu

Chargez une image couleur et créez une illusion d'aquarelle.

L'illusion de l'aquarelle est de ne mettre de la couleur que sur le contour des peintures et des photographies. Un phénomène dans lequel les zones qui ne sont pas réellement colorées semblent être légèrement colorées ... Et, parler de vision sera long, alors voici quelques liens. Des exemples d'illusions d'aquarelle sont également affichés.

L'illusion de lumière, d'obscurité et de couleur causée par les bords - Page d'accueil d'Hitoyuki Arai Illusion Forum CVRM

image

L'image utilisée cette fois-ci provient du célèbre "Irasutoya"

"Produits spécialisés" test1.png

Narutake j'ai cherché diverses images avec mon sang

Corps

edge.py


import numpy as np
import cv2

"""
Environnement: python3.4.4 openCV
Image originale: image_name
Image à sauvegarder: out_name
image_Convertir le nom en illusion d'aquarelle et en sortie
"""

image_name = 'test1.png'
out_name = 'out1.png'


#Chargement des images
Img0 = cv2.imread(image_name)


#L'image est inversée en noir et blanc pour plus de commodité avec le masque ultérieur
negImg = 255 - Img0


#Obtenez la taille de l'image et spécifiez l'épaisseur du contour
ImgHeight, ImgWidth = Img0.shape[:2]
#Le plus long/200 + 1
if ImgWidth > ImgHeight:
	lineWeight = ImgHeight // 200 + 1
else:
	lineWeight = ImgWidth // 200 + 1


#Obtenez l'avantage(Seuil en deux étapes 100200)
#Comme nous allons faire correspondre deux contours avec des épaisseurs différentes plus tard, préparez deux images
edgeImg1 = cv2.Canny(Img0,100,200,4)
edgeImg2 = cv2.Canny(Img0,100,200,4)


#Objets sur fond noir(blanc)Détecter le contour de
image1, contours, hierarchy = cv2.findContours(edgeImg1,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
image2, contours, hierarchy = cv2.findContours(edgeImg2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)


#Contour noir
edge = cv2.drawContours(image1, contours, -1, (255,255,255), 1)
#Couleur autour du contour noir(Élément aquarelle)
mask1 = cv2.drawContours(image2, contours, -1, (255,255,255), lineWeight)


#Le bord étant blanc sur fond noir, il est affiché en sens inverse
negEdge = 255- edge


#Couper l'image inversée avec un masque
negColor = cv2.bitwise_and(negImg, negImg, mask=mask1)


#Inverser à nouveau l'image inversée recadrée
Color = 255-negColor


#Image à sortir
output = cv2.bitwise_and(Color, Color, mask=negEdge)
cv2.imshow('image', output)

#Appuyez sur la touche esc pour terminer
#Appuyez sur s pour enregistrer
k = cv2.waitKey(0) & 0xFF
if k == 27:
    cv2.destroyAllWindows()
elif k == ord('s'):
    cv2.imwrite('out01.png',output)

#python edge.Courir avec py

production

Que diriez-vous. At-il l'air coloré? out01.png

Divers

La détection des bords est facile car elle fournit une fonction.

Cependant, comme la détection des contours par Canny () est basée sur seulement deux seuils, il n'est pas possible de faire un jugement de limite délicat comme l'œil humain. C'est pourquoi les feuilles de carottes ont disparu, et le riz est devenu un et ressemble à des haricots écrasés que vous ne comprenez pas.

Autre chose, répéter les inversions n'est pas très intelligent. Cependant, lorsque j'essayais de laisser les bords noirs ou de blanchir les non-bords, le résultat était comme ça. Ce serait un peu plus facile si le fond pouvait être blanchi ...

référence

Irasutoya OpenCV-Python Tutorials 1 documentation Le processus d'apprentissage de Python Pinna, B., Brelstaff, G., and Spillmann, L. (2001) Surface color from boundaries: a new ‘watercolor’ illusion. Vision Research, 41, 2669-2676.

Recommended Posts

Dessinez une illusion d'aquarelle avec détection des contours en Python3 et openCV3
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Créez une illusion rayée avec correction gamma pour Python3 et openCV3
Hello World et détection de visage avec OpenCV 4.3 + Python
Essayez la détection des bords avec OpenCV
Détection des bords en temps réel avec OpenCV
Détection de visage avec Python + OpenCV
Dessinez un cœur en Python
Briller la vie avec Python et OpenCV
Réseau neuronal avec OpenCV 3 et Python 3
Dessinez une matrice de diagramme de dispersion avec python
Utiliser OpenCV avec Python 3 dans Window
Dessinez une illustration avec Python + OpenCV
Dessinez un diagramme CNN en Python
Dessinez des figures avec OpenCV et PIL
Dessinez une flèche (vecteur) avec opencv / python
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Créez un simple OMR (lecteur de feuille de marque) avec Python et OpenCV
[Traitement d'image] Poo-san est nu par détection de bord en utilisant Python et OpenCV!
Détection de visage avec Python + OpenCV (rotation invariante)
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Dessinez un cœur en rubis avec PyCall
Dessinez Nozomi Sasaki dans Excel avec python
Capturer des images avec Pupil, python et OpenCV
Un mémo contenant Python2.7 et Python3 dans CentOS
Dessiner un cœur avec Python Partie 2 (SymPy Edition)
Gérer les "années et mois" en Python
Dessinez une structure arborescente en Python 3 à l'aide de graphviz
Notez l'installation de modules tels que pytorch et opencv avec pip dans Blender python (2.82a ou version ultérieure)
Mettez OpenCV dans OS X avec Homebrew et vidéo d'entrée / sortie avec python
Comment mettre OpenCV dans Raspberry Pi et collecter facilement des images des résultats de détection de visage avec Python
Dessiner un graphique d'une fonction quadratique en Python
[Python] Récupérez les fichiers dans le dossier avec Python
Dessinez un graphique avec des étiquettes japonaises dans Jupyter
Construire un environnement python avec virtualenv et direnv
Extraction de bords avec python + OpenCV (filtre Sobel, filtre laplacien)
Essayez de dessiner une courbe de vie avec python
J'ai écrit une classe en Python3 et Java
Créer un environnement virtuel avec conda avec Python
Installez OpenCV 4.0 et Python 3.7 sur Windows 10 avec Anaconda
[Python] Dessinez un Mickey Mouse avec une tortue [Débutant]
Lancer un serveur Web avec Python et Flask
Travaillez dans un environnement virtuel avec Python virtualenv.
Créer une nouvelle page en confluence avec Python
[Python] Comment dessiner un histogramme avec Matplotlib
Correspondance des fonctionnalités avec OpenCV 3 et Python 3 (A-KAZE, KNN)
Mettez Docker dans Windows Home et exécutez un serveur Web simple avec Python
Comment générer un code QR et un code à barres en Python et le lire normalement ou en temps réel avec OpenCV
Peut être fait en 5 minutes!? Créez une API de détection de visage avec Fast API et OpenCV et publiez-la sur Heroku
[Python] Dessinez un diagramme de relation de balises Qiita avec NetworkX
Automatisez la suppression de l'arrière-plan pour les derniers portraits dans un répertoire avec Python et API
Comment convertir / restaurer une chaîne avec [] en python
Calculer et dessiner des diagrammes Boronoi bornés (fermés) en Python
Binarisation avec OpenCV / Python
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
J'ai créé un programme pour convertir des images en art ASCII avec Python et OpenCV
Jouer avec l'API d'intelligence artificielle locale de l'utilisateur en Python
Créez un Slackbot simple avec un bouton interactif en python
Comprenez attentivement la distribution exponentielle et dessinez en Python