Erstellen Sie eine gestreifte Illusion mit Gammakorrektur für Python3 und openCV3

Umgebung

windows8.1 python3.4.4 opencv3.1.0

Überblick

Schauen Sie sich zunächst die tatsächliche gestreifte Illusion an.

out03.jpg

Kannst du diese Art von Eichhörnchen nicht sehen? (Das Bild ist von "Free Stock Photo Material Pakutaso") out1.jpg

Ich werde es mit einer Illustration versuchen. Wie üblich ist dies eine Illustration eines Mexikaners, der von "Irasutoya" entlehnt wurde. mexico.jpg

Machen wir dies zu einer gestreiften Illusion.

Verfahren

Es ist grob in drei Stufen unterteilt.

  1. Konvertieren Sie das Bild in Schwarzweiß
  2. Mit Gammakorrektur aufhellen
  3. Mit Streifen kombinieren

Körper

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

Ausgabe

out01.jpg

Können Sie es sehen? Ich bin ein gesunder Mexikaner.

Einzelheiten

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)

Referenz

BlankTar FROM UMENTU IMPORT STUPID opencv v2.1 Dokumentation Array-Operationen Kostenlose Fotos Irasutoya

Recommended Posts

Erstellen Sie eine gestreifte Illusion mit Gammakorrektur für Python3 und openCV3
Zeichnen Sie eine Aquarellillusion mit Kantenerkennung in Python3 und openCV3
Erstellen Sie mit Minette für Python einen LINE BOT
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Erstellen Sie ein Verzeichnis mit Python
Erstellen Sie mit OpenCV und Python (Mertens, Robertson, Debevec) ein High Dynamic Range Image (HDR).
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Erstellen Sie ein untergeordnetes Konto für die Verbindung mit Stripe in Python
[Python] Erstellen Sie eine Datums- und Zeitliste für einen bestimmten Zeitraum
Lassen Sie uns ein PRML-Diagramm mit Python, Numpy und matplotlib erstellen.
Installationsverfahren für Python und Ansible mit einer bestimmten Version
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
Erstellen Sie mit python wxpython + openCV ein einfaches Videoanalysetool
Bibliothek zur Angabe eines Nameservers in Python und Dig
[Python] Erstellen Sie mit Django einen Bildschirm für den HTTP-Statuscode 403/404/500
Leuchtendes Leben mit Python und OpenCV
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie eine Windows Python-Ausführungsumgebung mit VScode + Remote WSL
Erstellen Sie mit Python + Qt (PySide) einen Farbwähler für das Farbrad.
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Erstellen Sie mit Python und OpenCV ein einfaches OMR (Mark Sheet Reader)
Erstellen Sie ein USB-Boot-Ubuntu mit einer Python-Umgebung für die Datenanalyse
Erstellen Sie eine CP932-CSV-Datei für Excel mit Chalice und geben Sie sie zurück
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen Sie mit Python + PIL ein Dummy-Image.
Erstellen wir eine virtuelle Umgebung für Python
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Bilder mit Pupil, Python und OpenCV aufnehmen
Ein Memo mit Python2.7 und Python3 in CentOS
Erstellen und entschlüsseln Sie Caesar-Code mit Python
Erstellen verschiedener Photoshop-Videos mit Python + OpenCV ③ Erstellen Sie verschiedene Photoshop-Videos
Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler
[Python] Bilder mit OpenCV lesen (für Anfänger)
[AWS] Erstellen Sie mit CodeStar eine Python Lambda-Umgebung und führen Sie Hello World aus
Erstellen Sie mit Python + OpenCV Ihre eigene virtuelle Kamera und wenden Sie Originaleffekte an
Erstellen eines Markierungsblatts mit Python OpenCV (Tipps zum guten Lesen)
Erstellen Sie eine Python3-Umgebung mit pyenv auf einem Mac und zeigen Sie NetworkX-Diagramme an
Erstellen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (5. Information Entropy)
[Python] Erstellen einer Wörterbuchtypliste, Hinzufügen / Ändern / Löschen von Elementen und Extrahieren mit einer for-Anweisung
Hallo Welt- und Gesichtserkennung mit OpenCV 4.3 + Python
Erstellen Sie mit tkinter [Python] einen Rahmen mit transparentem Hintergrund.
Kausales Denken und kausale Suche von Python (für Anfänger)
Holen Sie sich ein Ticket für einen Themenpark mit Python
Erstellen einer Python-Umgebung mit virtualenv und direnv
Vorgehensweise zum Erstellen eines mit Python erstellten LineBot
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Installieren Sie OpenCV 4.0 und Python 3.7 unter Windows 10 mit Anaconda
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird
[Hinweis] Erstellen Sie mit Python eine einzeilige Zeitzonenklasse
Sie können auch mit Python problemlos eine GUI erstellen
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Erstellen Sie mit Django ein Dashboard für Netzwerkgeräte!
Erstellen Sie eine Webmap mit Python und GDAL
Erstellen Sie eine Farbleiste mit Python + Qt (PySide)
Schritte zum Erstellen eines Twitter-Bots mit Python
Starten Sie einen Webserver mit Python und Flask