windows8.1 python3.4.4 opencv3.1.0
Schauen Sie sich zunächst die tatsächliche gestreifte Illusion an.
Kannst du diese Art von Eichhörnchen nicht sehen? (Das Bild ist von "Free Stock Photo Material Pakutaso")
Ich werde es mit einer Illustration versuchen. Wie üblich ist dies eine Illustration eines Mexikaners, der von "Irasutoya" entlehnt wurde.
Machen wir dies zu einer gestreiften Illusion.
Es ist grob in drei Stufen unterteilt.
stripe.py
import numpy as np
import cv2
"""
Umgebung: python3.4.4 openCV
Original Bild: image_name
Bild zum Speichern: out_name
Geben Sie das Bild als Streifenillusion aus
(Auf den ersten Blick ist es nur ein Streifen, aber die Illusion entsteht, wenn man ihn kopfschüttelnd betrachtet)
"""
image_name = 'mexico.jpg'
out_name1 = 'out01.jpg'
out_name2 = 'out02.jpg'
out_name3 = 'out03.jpg'
#Bilder laden
Img0 = cv2.imread(image_name,-1)
#In Schwarzweiß konvertieren
Img0 = cv2.cvtColor(Img0, cv2.COLOR_RGB2GRAY)
#Bildgröße abrufen
Height, Width = Img0.shape[:2]
#Matrixgröße
rows = Height
cols = Width
#Erstellen Sie einen rein weißen Hintergrund
whiteImg = np.zeros((rows, cols), np.uint8)
whiteImg.fill(255)
#Synthetisiert mit dem Original Img0
whiteImg += Img0
#Anzeige auf dem Weg
cv2.imshow("white back image", whiteImg)
k = cv2.waitKey(0)
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite(out_name1,whiteImg)
#Helligkeitsanpassung(Gamma-Korrektur)
#Gammawert(Viel größer als gewöhnlich)
gamma = 19.0
#Array für den Konvertierungslook_up_Mach einen Tisch
look_up_table = np.zeros((256, 1), np.uint8)
for i in range(256):
look_up_table[i][0] = 255 * pow(float(i) / 255, 1.0 / gamma)
#Konvertieren Sie das vorherige Bild mit LookUpTable
newImg = cv2.LUT(whiteImg, look_up_table)
#Anzeige auf dem Weg
cv2.imshow("higher brightness image", newImg)
k = cv2.waitKey(0)
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite(out_name2,newImg)
#Erstellen Sie ein Array für Streifen.
stripe = np.zeros((rows, cols), np.uint8)
#Die Breite des Streifens ist die Breite/160(Empirische Regel)
if Width >= 640:
w = Width/160
else:
w = 4
w = int(w)
#0~640 in weiß, je 4
for i in range(0, w):
stripe[0:rows, i:cols:w*2] = 0
#0~64 in schwarz von 4
for i in range(0, w):
stripe[0:rows, i:cols:w*2] = 1
#Wenn Sie ein Bild als Matrix behandeln, nicht als logisches Produkt
#Da es als Multiplikation von Zahlen behandelt wird, ändern Sie es von 0 auf 1.
#Überlagerungsstreifen
newImg *= stripe
#Bild zum Ausgeben
cv2.imshow('final stripe image', newImg)
#Drücken Sie eine beliebige 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(out_name3,newImg)
#python stripe.Lauf mit py
Können Sie es sehen? Ich bin ein gesunder Mexikaner.
Wenn es einen transparenten Teil wie png gibt, ist der transparente Teil schwarz, daher muss der Hintergrund weiß gemacht werden. Dieses Mal beträgt durch Hinzufügen von 255 zu allen Pixelwerten der Teil mit der Helligkeit 0 255 (weiß), und die anderen Teile sind die Werte, die durch Subtrahieren von 1 vom ursprünglichen Pixelwert erhalten werden (z. B. 1, wenn der Pixelwert 1 ist). Ich habe die Methode gewählt, +255 = 256 zu setzen, dh 0).
Die Gammakorrekturformel lautet [hier](https://www.blog.umentu.work/python-opencv3%E3%81%A7%E3%82%AC%E3%83%B3%E3%83%9E%E5 Bitte überprüfen Sie mit% A4% 89% E6% 8F% 9Bgamma-Umwandlung-2 /). Da die Stärke des optischen Signals nicht proportional zum elektrischen Signal ist, erhöhen wir den Wert nicht gleichmäßig, sondern nehmen eine solche Korrektur vor.
Darüber hinaus werden die folgenden drei Matrixberechnungen vorgestellt, die für die Bildverarbeitung geeignet sind.
-Erstelle eine Matrix mit allen Elementen 0
Img = np.zeros((rows, cols), np.uint8)
-Füllen Sie die Matrix mit einem bestimmten Wert
Img.fill(255)
Img[row1:row2:w1, col1:col2:w2] = 0
BlankTar FROM UMENTU IMPORT STUPID opencv v2.1 Dokumentation Array-Operationen Kostenlose Fotos Irasutoya
Recommended Posts