2016-05-14 6 views
0

Ich habe eine Matte dieser Artimshow img mit den Werten 0 1 mit opencv

Mat port(M.size(),CV_8UC1); 

und innen Ich habe die zwei Werte: 0 und 1.

Wenn ich versuche, imshow (" p " , port) ; zu tun
img von einem schwarzen.

Wie kann ich alle 0 und 1 mit zwei verschiedenen Farben unterscheiden?

Ich habe versucht und versucht, line() zu verwenden, aber Sie müssen bereits die beiden nächsten Punkte kennen, während ich nicht weiß, was die Werte 1 voneinander distanziert. kann mir jemand helfen? Es scheint ein triviales Problem

+0

Was haben Sie in Ihrer Matte? "0,1" wie in "1/10", oder Null und Eins. Wie erwarten Sie Farben in einem einzelnen Kanal Bild 'CV_8UC1' - es wird Graustufen sein. –

Antwort

3

Ihre Daten für die Anzeige Versuchen Skalierung: imshow(" p ", port*255);

Ein Grauwert von 1 ist fast nicht zu unterscheiden von den vollen schwarzen und nicht auf jedem normalen Monitor/Bildschirm erkennbar sein. Durch die Skalierung um 255 werden diese Pixel weiß angezeigt.
Beachten Sie, dass die Skalierung nur für das Display erfolgt und nicht das Bild selbst beeinflusst.

Bitte sehen the imshow() docs für das, was Skalierung erfolgt und die Werte für die Anzeige:

Die Funktion skaliert das Bild kann auf seiner Tiefe abhängig:

  • Wenn das Bild 8-Bit ohne Vorzeichen ist Es wird so angezeigt, wie es ist.
  • Wenn das Bild eine 16-Bit-Ganzzahl ohne Vorzeichen oder eine 32-Bit-Ganzzahl ist, werden die Pixel durch 256 geteilt. Das heißt, der Wertebereich [0,255 * 256] wird [0,255] zugeordnet.
  • Wenn das Bild ein 32-Bit-Fließkommawert ist, werden die Pixelwerte mit 255 multipliziert. Dies bedeutet, dass der Wertebereich [0,1] auf [0,255] abgebildet wird.
+0

Ich habe Ihren Vorschlag versucht, aber ich kann sehr wenig von der "farbigen" Linie (nicht schwarz) sehen, die ich möchte. Aber ich musste den Typ von Mat mit CV_32SC1 aus anderen Gründen ändern – kea

+0

Wenn Ihr Bildtyp 'CV_8C1' ist, wie Sie in Ihrer Frage geschrieben haben, sollten die Werte von' 1 * 255' weiß erscheinen. Wenn Ihr Typ etwas anderes ist, müssen Sie in der Dokumentation nachsehen, welche Skalierung 'imshow' macht. –

+0

versuchen Sie Port * 255 * 255 – Micka

Verwandte Themen