Ändern der Farbe eines pixels mit OpenCV
Lassen Sie uns sagen, dass ich diese rose (interessieren sich nicht für den hintergrund, nur die weißen Blätter sind wichtig).
Ich mich verwandeln es in ein Graustufen-Bild:
grayscaled=cv2.imread('white_rose.png',cv2.IMREAD_GRAYSCALE)
Wie kann ich das ändern jedes weiße pixel, eine rote, unter der Bedingung, dass die rote Farbe (R=255
) haben den gleichen Kontrast wie die weiße hat ? Das heißt, ich möchte, um zu sehen, die weißen Blätter in Roter Farbe, aber mit den gleichen L
Wert eines jeden pixels, die in grayscaled
?
- Ändern Sie den Farbraum HSV und führen Sie dann die entsprechenden änderungen vor. So können Sie sicher sein, dass eine konsistente Kontrast-Wert.
- danke. Aber was meinst du mit den entsprechenden änderungen ? @scap3y
- Finden Sie unter den link hier für mehr details über den HSV-Farbraum. Zum Beispiel weiß hätte sehr niedrigen N-und hohen V-Werten. Sie können ändern Sie den H-Wert ein es zu das eine die dem entspricht, was ROT und alter S/V-Wert entsprechend.
- danke, ich werde versuchen Sie es und lassen Sie wissen,
- Sie können ändern Sie den H-Wert ein es zu das eine die dem entspricht, was ROT: Wie Sie wissen, dass
H
von einer weißlichen pixel entspricht, dieH
rot , bitte ? (ja, ich habe gelesen, dass Artikel -) @scap3y - Okay, so Weiß interpretiert wird, in den HSV-Raum ist, dass es kann jeden Farbton, sondern die Sättigung, der Farbton ist sehr niedrig) mit hoher Helligkeit (V). Das macht die Dinge klarer? Ich vermute, Sie hatte noch nicht viel theoretischen hintergrund, auf Farbräume, so könnte ich schlage vor, Lesen, Computer Vision Hartley-Zisserman? HTH
- Ich wusste, bevor über den HSV-Farbraum, auch wenn ich kein Experte bin, aber ich weiß nicht, wie man der H-Wert einer Farbe in das entsprechende H eine andere. @scap3y, weil jede Farbe definiert ist, in seinen eigenen Engel Rahmen
- Sie müssen spielen, um mit dieser auf Ihrem eigenen. Lesen Sie die OpenCV-Dokumentation für details. Zu starten: gehen Sie durch jedes pixel Wert, und match-H,S-und V-Werte für weiß. Ersetzen Sie, dass mit der H-Wert von Rot mit einem höheren S.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie eine Schleife über dein graues Bild und erstellen Sie ein neues farbiges Bild von sich selbst.
Für jedes pixel, können Sie ersetzen die
R
Wert dein farbiges Bild mit der Rest der Division von255
und relative Grauwert:und mit
new=[[[255%j,255%j,j] for j in i] for i in img_gray]
:G,B,R
Werte, jeder so wie ich denkt, dass diese Antwort kann akzeptiert werden!;)