Es tut mir leid für das plötzliche Bild von Onkel Musai.
Ich versuchte: "Kann ich jede der vier farbigen Holzkugeln aus Rot, Gelb, Blau und Grün extrahieren?"
Sowohl die Python-Geschichte als auch die OpenCV-Geschichte dauern ungefähr einen Monat. Bitte weisen Sie (wirklich) auf meine schlechten Punkte hin.
Das Folgende ist
hTarget
) des angegebenen Farbtons ( hue
) auf.hMask2
)Der Code.
filters.py
...
def hueMask(src, dst, hue, hueRange):
src = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(src)
hOrg = h.copy()
hTarget = h.copy()
cv2.threshold(hTarget, hue + hueRange, hue, cv2.THRESH_TOZERO_INV, hTarget)
# 「src(x,y)Wenn größer als der Schwellenwert ist, dst(x,y)ist 0 "
# 0
# 0
# 0
# thresh
# src
# src
# src
# src
# src
cv2.threshold(hTarget, hue - hueRange, hue, cv2.THRESH_BINARY, hTarget)
# 「src(x,y)Wenn kleiner als der Schwellenwert ist, dst(x,y)ist 0 "
# 0(src)
# 0(src)
# 0(src)
# src
# src
# thresh
# 0
# 0
# 0
#Ergebnis
# 0
# 0
# 0
# thresh
# src
# thresh
# 0
# 0
# 0
#Um fluoreszierendes Licht (gelb) und Haare (blau) auszuschließen
#Schließen Sie extrem entsättigte Pixel aus dem Zielbereich aus
sNotVeryLow = s.copy() #Wo die Sättigung nicht extrem niedrig ist
#Wenn die Sättigung höher als 31 ist, legen Sie sie in den Zielbereich (255).
#Ansonsten der Nichtzielbereich (0).
cv2.threshold(sNotVeryLow, 31, 255, cv2.THRESH_BINARY, sNotVeryLow)
#Das logische Produkt von hTarget und vNotHighlight ist das neue hTarget
cv2.bitwise_and(hTarget, vNotVeryLow, hTarget)
#Erstellen Sie eine Kopie des Helligkeitsbildes.
vBrightened = v.copy()
#und dazu+Wenden Sie eine 96-Gammakorrektur an, um es heller zu machen
cv2.addWeighted(v, 0.625, v, 0.0, 96, vBrightened)
#Fügen Sie ein gammakorrigiertes Helligkeitsbild nur im Zielbereich des Helligkeitsbildes ein
cv2.bitwise_and(vBrightened, 255, v, hTarget)
hMask2 = h.copy()
#Wenn das entsprechende Pixel von hTarget (1-Kanal-Bild) 0 ist
#Stellen Sie das entsprechende Pixel von hMask2 (1-Kanal-Bild) auf 255 ein.
#Andernfalls setzen Sie es auf 0.
#Kurz gesagt, hMask2 ist eine invertierte Version des hTarget-Maskenbilds.
cv2.compare(hTarget, 0, cv2.CMP_EQ, hMask2)
cv2.bitwise_and(s, 0, s, hMask2) #Logisches UND
cv2.merge((hOrg, s, v), src)
cv2.cvtColor(src, cv2.COLOR_HSV2BGR, dst)
...
Irgendwie ist der Name der Variablen schmutzig, aber ... Jetzt können Sie jeden Farbton extrahieren.
Versuchen Sie als Nächstes, vier Farben zu extrahieren, dh die Farbtöne Rot, Gelb, Blau und Grün.
App.py
...
class App(object):
def __init__(self):
...
self._shouldHueMask = False
...
def run(self):
...
while self._windowManager.isWindowCreated:
...
if self._shouldHueMask:
filters.hueMask(frame, frame, self._hue, self._hueRange)
...
def onKeypress(self, keycode):
...
elif keycode == ord('B'): #Blau
self._hue = 110
self._hueRange = 10
self._shouldHueMask = \
not self._shouldHueMask
elif keycode == ord('G'): #Grün
self._hue = 70
self._hueRange = 25
self._shouldHueMask = \
not self._shouldHueMask
elif keycode == ord('R'): #rot
self._hue = 5
self._hueRange = 5
self._shouldHueMask = \
not self._shouldHueMask
elif keycode == ord('Y'): #Gelb
self._hue = 30
self._hueRange = 15
self._shouldHueMask = \
not self._shouldHueMask
...
if __name__=="__main__":
App().run()
Der Farbtonwert und die Breite von Rot, Gelb, Blau und Grün wurden nach Versuch und Irrtum festgelegt.
Nun, es scheint, dass die Hautfarbe auf die "rote Extraktion" reagiert hat. Damit ist es nicht möglich, die Holzkugel "nur" herauszuziehen.
Nun, diesmal hat die Decke auf die "gelbe Extraktion" reagiert.
Diesmal haben die Haare und der schwarze Pullover auf die "blaue Extraktion" reagiert.
Ich konnte die Holzkugeln am schönsten extrahieren.
Wenn Sie Bilder synthetisieren, stehen Sie vor einem grünen Tuch, das als grüner Hintergrund bezeichnet wird. Es gibt einen Grund, warum es grün war.
Der Grund, warum Grün beruhigend ist, kann sein, dass sich die Augen mit neuen Reizen wohl fühlen, im Gegensatz zu den Farben, die im Alltag auftreten.
Vielleicht ist die Tafel deshalb grün?
Ich werde den Pinsel darauf legen und Raum für Diskussionen lassen.
Ich blogge: Weed.nagoya
Recommended Posts