2016-04-19 8 views
-1

Ich habe ein Eingabebild vom Typ CV_32UC3 RGB Mat, das ich in CV_8UC3 konvertieren möchte. Ich habe versucht, die convertTo-Methode wie folgt zu verwenden:Wie kann ich ein 32b-Bild erfolgreich in 8b konvertieren?

img.convertTo(dst, CV_8UC3, 0.00390625) 

Allerdings ist das resultierende Bild vollständig schwarz.

Meine Frage ist, wie kann ich erfolgreich ein 32b 3-Kanal-Bild in 8b konvertieren?

+0

Etwas stimmt hier nicht überein. Zuerst sprichst du über 'CV_32UC3 -> CV_8UC3'. Später ist es 'CV_32UC4 -> CV_8UC4'. Dann in der Antwort wird es Fließkomma statt Integer. Also, was ist das eigentliche Problem, das Sie versuchen zu lösen? –

+0

Diese Inkonsistenz hat keinen Einfluss auf die Frage, was aus der Betreffzeile deutlich wird. Um Verwirrung zu vermeiden, habe ich die Beschreibung bearbeitet. –

+0

IMHO tut es. "CV_32UC3" unterscheidet sich von "CV_32FC3", wobei einer "int32_t" ist, der andere "float". Gleitkommabilder haben normalerweise einen Intensitätsbereich von 0.0-1.0. In einem Integer-Bild würde diese Art von Bereich nur 2 Farben bedeuten. Wenn Ihre Eingabedaten wirklich 32-Bit-Ganzzahlen sind, wie groß ist der tatsächliche Wertebereich? 0 .. (2^32) -1? –

Antwort

0

Ich glaube, deine Waage ist rückwärts. Wenn Sie von einem Gleitkommabild (0-1-Werte) auf 8 Bit skalieren möchten, müssen Sie 255 als Skalierungsfaktor verwenden.

+0

Sie haben Recht, danke. Ich habe es genau so entdeckt, wie du es geschrieben hast! –

Verwandte Themen