windows8.1 python3.4.4 opencv3.1.0
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
Das diesmal verwendete Bild stammt aus dem bekannten "Irasutoya"
"Spezialwaren"
Narutake Ich suchte mit meinem Blut nach verschiedenen Bildern
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
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