Je suis désolé pour l'image soudaine de l'oncle Musai.
J'ai essayé, "Puis-je extraire chacune des quatre boules en bois colorées de rouge, jaune, bleu et vert?"
L'histoire de Python et celle d'OpenCV durent environ un mois, alors veuillez souligner mes points faibles (vraiment).
Ce qui suit est
hTarget
) de la teinte spécifiée ( hue
)hMask2
)Le 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)Si est supérieur au seuil, dst(x,y)vaut 0 "
# 0
# 0
# 0
# thresh
# src
# src
# src
# src
# src
cv2.threshold(hTarget, hue - hueRange, hue, cv2.THRESH_BINARY, hTarget)
# 「src(x,y)Si est inférieur au seuil, dst(x,y)vaut 0 "
# 0(src)
# 0(src)
# 0(src)
# src
# src
# thresh
# 0
# 0
# 0
#résultat
# 0
# 0
# 0
# thresh
# src
# thresh
# 0
# 0
# 0
#Pour exclure la lumière fluorescente (jaune) et les cheveux (bleu)
#Exclure les pixels extrêmement désaturés de la plage cible
sNotVeryLow = s.copy() #Où la saturation n'est pas extrêmement faible
#Si la saturation est supérieure à 31, placez-la dans la plage cible (255).
#Sinon, la plage non cible (0).
cv2.threshold(sNotVeryLow, 31, 255, cv2.THRESH_BINARY, sNotVeryLow)
#Le produit logique de hTarget et vNotHighlight est le nouveau hTarget
cv2.bitwise_and(hTarget, vNotVeryLow, hTarget)
#Faites une copie de l'image de luminosité.
vBrightened = v.copy()
#en plus+Appliquez une correction gamma 96 pour le rendre plus lumineux
cv2.addWeighted(v, 0.625, v, 0.0, 96, vBrightened)
#Insérez une image de luminosité corrigée gamma uniquement dans la plage cible de l'image de luminosité
cv2.bitwise_and(vBrightened, 255, v, hTarget)
hMask2 = h.copy()
#Lorsque le pixel correspondant de hTarget (1 image de canal) est 0
#Définissez le pixel correspondant de hMask2 (image 1 canal) sur 255.
#Sinon, réglez-le sur 0.
#En bref, hMask2 est une version inversée de l'image du masque hTarget.
cv2.compare(hTarget, 0, cv2.CMP_EQ, hMask2)
cv2.bitwise_and(s, 0, s, hMask2) #ET logique
cv2.merge((hOrg, s, v), src)
cv2.cvtColor(src, cv2.COLOR_HSV2BGR, dst)
...
D'une manière ou d'une autre, le nom de la variable est sale, mais ... Vous pouvez maintenant extraire n'importe quelle teinte.
Ensuite, essayez d'extraire quatre couleurs, c'est-à-dire les teintes de rouge, jaune, bleu et vert.
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'): #Bleu
self._hue = 110
self._hueRange = 10
self._shouldHueMask = \
not self._shouldHueMask
elif keycode == ord('G'): #vert
self._hue = 70
self._hueRange = 25
self._shouldHueMask = \
not self._shouldHueMask
elif keycode == ord('R'): #rouge
self._hue = 5
self._hueRange = 5
self._shouldHueMask = \
not self._shouldHueMask
elif keycode == ord('Y'): #Jaune
self._hue = 30
self._hueRange = 15
self._shouldHueMask = \
not self._shouldHueMask
...
if __name__=="__main__":
App().run()
La valeur de la teinte et la largeur de chacun des rouges, jaunes, bleus et verts ont été décidées après essais et erreurs.
Eh bien, il semble que la couleur de la peau ait réagi à "l'extraction du rouge". Avec cela, il n'est pas possible d'extraire la boule de bois "seulement".
Eh bien, cette fois, le plafond a réagi à «l'extraction jaune».
Cette fois, les cheveux et le pull noir ont réagi à "l'extraction bleue".
J'ai pu extraire les boules de bois de la plus belle manière.
Lors de la synthèse d'images, vous vous tenez devant un tissu vert appelé fond vert. Il y a une raison pour laquelle c'était vert.
La raison pour laquelle le vert est apaisant peut être que les yeux se sentent à l'aise avec de nouveaux stimuli, contrairement aux couleurs qui apparaissent dans la vie quotidienne.
C'est peut-être pour ça que le tableau noir est vert?
Je vais mettre le pinceau dessus, laissant place à la discussion.
Je blogue: Weed.nagoya
Recommended Posts