OpenCV: Setzen aller Pixel eines bestimmten BGR-Wertes auf einen anderen BGR-Wert

8

Ich verwende OpenCV mit Python. Ich habe ein Bild, und ich möchte alle Pixel des BGR-Wertes [0, 0, 255] auf [0, 255, 255] setzen.

Ich fragte eine vorherige Frage nach, wie man ein Bild vertont, und aus der Antwort habe ich gelernt, Indexierung mit einem Array von Indizes, zum Beispiel:    Bild [Bild & gt; 128] = 255

Ich verstehe, wie das funktioniert, da Bild & gt; 128 gibt ein Array eines mehrdimensionalen Arrays von Indizes zurück, das die Bedingung erfüllt, und dann wende ich dieses Array an das Bild an und setze diese auf 255. Ich bin jedoch verwirrt darüber, wie ich dies auf einen Wert für einen erweitern kann Array.

Ich habe Folgendes versucht:

%Vor%

aber es funktioniert nicht, mit dem Fehler:

%Vor%

Gibt es einen effizienten Weg, damit umzugehen?

    
steve8918 11.07.2012, 13:20
quelle

1 Antwort

14

Betrachten Sie ein bildartiges Array wie folgt:

%Vor%

Alle Elemente sind [0,0,255]. Seine Form ist 2x5x3. Denken Sie nur, dass es auch andere Werte gibt. (Ich kann nicht alle diese erstellen).

Sie finden nun, wo [0,0,255] vorhanden sind und ändern sie zu [0,255,255]. Sie können es wie folgt tun:

%Vor%

Jetzt überprüfen Sie die rote.

%Vor%

Hoffe, das ist was du willst.

Testergebnisse:

Sehen Sie sich den Code dieses Links an: Ссылка

Ich möchte alle roten Pixel in Gelb umwandeln, wie in Frage gestellt.

Also habe ich am Ende das unten stehende Stück Code hinzugefügt:

%Vor%

Unten ist das Ergebnis, das ich bekommen habe:

Was ist, wenn ich den grünen Grund zu gelbem Grund ändern möchte:

%Vor%

Ergebnis:

    
Abid Rahman K 11.07.2012, 14:15
quelle

Tags und Links