Zeichnen Sie eine Aquarellillusion mit Kantenerkennung in Python3 und openCV3

Umgebung

windows8.1  python3.4.4  opencv3.1.0

Überblick

Laden Sie ein Farbbild und erstellen Sie eine Aquarellillusion.

Die Aquarellillusion besteht darin, Farbe nur auf die Umrisse von Gemälden und Fotografien zu bringen. Ein Phänomen, bei dem Bereiche, die nicht wirklich gefärbt sind, leicht gefärbt zu sein scheinen ... Und über Vision zu sprechen wird lange dauern, deshalb hier einige Links. Beispiele für Aquarellillusionen werden ebenfalls veröffentlicht.

Die Illusion von Licht, Dunkelheit und Farbe, die durch Kanten verursacht wird - Hitoyuki Arais Homepage Illusion Forum CVRM

Bild

Das diesmal verwendete Bild stammt aus dem bekannten "Irasutoya"

"Spezialwaren" test1.png

Narutake Ich suchte mit meinem Blut nach verschiedenen Bildern

Körper

edge.py


import numpy as np
import cv2

"""
Umgebung: python3.4.4 openCV
Original Bild: image_name
Bild zum Speichern: out_name
image_Konvertieren Sie den Namen in eine Aquarellillusion und geben Sie sie aus
"""

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


#Bilder laden
Img0 = cv2.imread(image_name)


#Das Bild ist zur Vereinfachung mit der späteren Maske schwarz-weiß invertiert
negImg = 255 - Img0


#Ermitteln Sie die Größe des Bildes und geben Sie die Dicke des Umrisses an
ImgHeight, ImgWidth = Img0.shape[:2]
#Der längere/200 + 1
if ImgWidth > ImgHeight:
	lineWeight = ImgHeight // 200 + 1
else:
	lineWeight = ImgWidth // 200 + 1


#Holen Sie sich die Kante(Zweistufige Schwelle 100 200)
#Da wir später zwei Konturen mit unterschiedlichen Dicken anpassen werden, bereiten Sie zwei Bilder vor
edgeImg1 = cv2.Canny(Img0,100,200,4)
edgeImg2 = cv2.Canny(Img0,100,200,4)


#Objekte von einem schwarzen Hintergrund(Weiß)Erkennen Sie die Kontur von
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)


#Schwarze Kontur
edge = cv2.drawContours(image1, contours, -1, (255,255,255), 1)
#Farbe um den schwarzen Umriss(Aquarellelement)
mask1 = cv2.drawContours(image2, contours, -1, (255,255,255), lineWeight)


#Da die Kante auf schwarzem Hintergrund weiß ist, wird sie umgekehrt angezeigt
negEdge = 255- edge


#Schneiden Sie das invertierte Bild mit einer Maske aus
negColor = cv2.bitwise_and(negImg, negImg, mask=mask1)


#Invertieren Sie das zugeschnittene invertierte Bild erneut
Color = 255-negColor


#Bild zum Ausgeben
output = cv2.bitwise_and(Color, Color, mask=negEdge)
cv2.imshow('image', output)

#Drücken Sie die Esc-Taste, um den Vorgang abzuschließen
#Drücken Sie zum Speichern s
k = cv2.waitKey(0) & 0xFF
if k == 27:
    cv2.destroyAllWindows()
elif k == ord('s'):
    cv2.imwrite('out01.png',output)

#python edge.Lauf mit py

Ausgabe

out01.png

Die Kantenerkennung ist einfach, da Funktionen bereitgestellt werden. Da die Kantenerkennung durch Canny () jedoch nur auf zwei Schwellenwerten basiert, ist es nicht möglich, eine heikle Grenzbeurteilung wie beim menschlichen Auge vorzunehmen. Deshalb sind die Blätter der Karotten verschwunden, und der Reis ist eins geworden und sieht aus wie zerkleinerte Bohnen, die Sie nicht verstehen. Eine andere Sache, Inversionen zu wiederholen, ist nicht sehr klug. Als ich jedoch versuchte, die schwarzen Ränder zu belassen oder die Nichtkanten aufzuhellen, war das Ergebnis so. Es wäre etwas einfacher, wenn der Hintergrund weiß werden könnte ... Referenz

Irasutoya OpenCV-Python Tutorials 1 documentation Der Prozess des Lernens von Python Pinna, B., Brelstaff, G., and Spillmann, L. (2001) Surface color from boundaries: a new ‘watercolor’ illusion. Vision Research, 41, 2669-2676.

Recommended Posts

Zeichnen Sie eine Aquarellillusion mit Kantenerkennung in Python3 und openCV3
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Erstellen Sie eine gestreifte Illusion mit Gammakorrektur für Python3 und openCV3
Hallo Welt- und Gesichtserkennung mit OpenCV 4.3 + Python
Versuchen Sie die Kantenerkennung mit OpenCV
Echtzeit-Kantenerkennung mit OpenCV
Gesichtserkennung mit Python + OpenCV
Zeichne ein Herz in Python
Leuchtendes Leben mit Python und OpenCV
Neuronales Netzwerk mit OpenCV 3 und Python 3
Zeichnen Sie eine Streudiagrammmatrix mit Python
Verwenden Sie OpenCV mit Python 3 in Window
Zeichnen Sie eine Illustration mit Python + OpenCV
Zeichnen Sie ein CNN-Diagramm in Python
Zeichnen Sie Figuren mit OpenCV und PIL
Zeichnen Sie einen Pfeil (Vektor) mit opencv / python
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Erstellen Sie mit Python und OpenCV ein einfaches OMR (Mark Sheet Reader)
[Bildverarbeitung] Poo-san ist durch Kantenerkennung mit Python und OpenCV nackt!
Gesichtserkennung mit Python + OpenCV (invariante Rotation)
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Zeichne mit PyCall ein Herz in Ruby
Zeichnen Sie Nozomi Sasaki in Excel mit Python
Bilder mit Pupil, Python und OpenCV aufnehmen
Ein Memo mit Python2.7 und Python3 in CentOS
Mit Python Teil 2 ein Herz zeichnen (SymPy Edition)
Umgang mit "Jahren und Monaten" in Python
Zeichnen Sie mit graphviz eine Baumstruktur in Python 3
Beachten Sie die Installation von Modulen wie pytorch und opencv mit pip in Blender Python (2.82a oder höher).
Setzen Sie OpenCV in OS X mit Homebrew ein und geben Sie Video mit Python ein / aus
So fügen Sie OpenCV in Raspberry Pi ein und sammeln mit Python ganz einfach Bilder von Gesichtserkennungsergebnissen
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Zeichnen Sie in Jupyter ein Diagramm mit japanischen Beschriftungen
Erstellen einer Python-Umgebung mit virtualenv und direnv
Kantenextraktion mit Python + OpenCV (Sobel-Filter, Laplace-Filter)
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Ich habe eine Klasse in Python3 und Java geschrieben
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Installieren Sie OpenCV 4.0 und Python 3.7 unter Windows 10 mit Anaconda
[Python] Zeichne eine Mickey Mouse mit Turtle [Anfänger]
Starten Sie einen Webserver mit Python und Flask
Arbeiten Sie in einer virtuellen Umgebung mit Python virtualenv.
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
Feature Matching mit OpenCV 3 und Python 3 (A-KAZE, KNN)
Stellen Sie Docker in Windows Home und führen Sie einen einfachen Webserver mit Python aus
So generieren Sie QR-Code und Barcode in Python und lesen ihn normal oder in Echtzeit mit OpenCV
Kann in 5 Minuten erledigt werden! Erstellen Sie eine Gesichtserkennungs-API mit Fast API und OpenCV und veröffentlichen Sie sie auf Heroku
[Python] Zeichnen Sie ein Qiita-Tag-Beziehungsdiagramm mit NetworkX
Automatisieren Sie das Entfernen des Hintergrunds für die neuesten Porträts in einem Verzeichnis mit Python und API
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Berechnen und zeichnen Sie begrenzte (geschlossene) Boronoi-Diagramme in Python
Binarisierung mit OpenCV / Python
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
Spielen mit der benutzerlokalen API für künstliche Intelligenz in Python
Erstellen Sie einen einfachen Slackbot mit einer interaktiven Schaltfläche in Python
Verstehen Sie die Exponentialverteilung sorgfältig und zeichnen Sie in Python