Farbe ein Graustufenbild mit opencv
ich bin mit openNI für ein Projekt mit kinect-sensor. ich möchte die Farbe der Benutzer Pixel gegeben, mit der Tiefe gekennzeichnet. jetzt habe ich Pixel das geht von weiß zu schwarz, aber ich will von rot auf schwarz. ich habe versucht mit alpha-blending, aber mein Ergebnis ist nur, dass ich die Pixel pink zu schwarz, da ich (mit addWeight) rot+weiß = rosa.
dies ist meine aktuelle code:
layers = device.getDepth().clone();
cvtColor(layers, layers, CV_GRAY2BGR);
Mat red = Mat(240,320, CV_8UC3, Scalar(255,0,0));
Mat red_body; //= Mat::zeros(240,320, CV_8UC3);
red.copyTo(red_body, device.getUserMask());
addWeighted(red_body, 0.8, layers, 0.5, 0.0, layers);
wobei das Gerät.getDepth() gibt eine cv::Mat mit der Tiefe von Karte und Gerät.getUserMask() gibt eine cv::Mat mit user Pixel (nur weiße Pixel)
einige Ratschläge?
BEARBEITEN:
eine weitere Sache:
Dank sammy Antwort ich es getan habe. aber eigentlich habe ich nicht Werte genau von 0 bis 255, sondern von (zum Beispiel) 123-220.
werde ich minimum und maximum finden, die über eine einfache for-Schleife (gibt es bessere Wege?), und wie kann ich anzeigen meine Werte von min-max 0-255 ?
- Haben Sie -Auswahl aufheben - Sammy ' s Antwort?? Es war eine sehr nette Antwort. Ich hatte nicht verstanden, wie Sie wollte Kolorieren Sie Ihre Graustufen-Bild. Mul ist eine schöne Lösung. Ich denke, es ist sehr unhöflich, um fügen Sie einen anderen Teil Ihrer Frage, der un-wählen Sie die zuvor richtige Antwort, und mehr warten. Nicht zu erwähnen, dass max-min " und " Skalierung sind leicht nach oben in den Referenzen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, OpenCV Standard-Farbe-format ist die BGR nicht RGB. Also, der code für die Erstellung der roten Bild sollte
Rot schwarz Farbe Karte, die Sie verwenden können, element-Weise Multiplikation anstelle von alpha-blending
Finden Sie die min-und max-Werte einer matrix M mit
Können Sie dann abziehen, die minValue und Skalierung mit einem Faktor
Irgendwie klobig und langsam, aber vielleicht geteilten Ebenen kopieren red_body (machen es zu einem ein-Kanal-Matte, nicht 3) zu den rot-Kanal, führen Sie Sie zurück in Schichten?
Den gleichen Effekt, aber viel schneller (in place) mit Umformen: