Ich habe folgenden Code:
cvtColor (image, image, CV_BGRA2RGB);
Vec3b bottomRGB;
bottomRGB=image.at<Vec3b>(821,1232);
Wenn ich zeige bottomRGB[0]
, es zeigt einen Wert größer als 255 an. Was ist der Grund dafür?
Khawar Ali
Ich habe folgenden Code:
cvtColor (image, image, CV_BGRA2RGB);
Vec3b bottomRGB;
bottomRGB=image.at<Vec3b>(821,1232);
Wenn ich zeige bottomRGB[0]
, es zeigt einen Wert größer als 255 an. Was ist der Grund dafür?
herohuyongtao
Wie Sie kommentiert haben, liegt der Grund darin, dass Sie cout
um seinen Inhalt direkt auszudrucken. Hier versuche ich Ihnen zu erklären, warum dies nicht funktioniert.
cout << bottomRGB[0] << endl;
"cout"
funktioniert komisch für "unsigned char"
?Es wird nicht funktionieren, weil hier bottomRGB[0]
ist ein unsigned char
(mit Wert 218
), cout
werde tatsächlich welche drucken Müllwert (oder nichts), da es nur a . ist nicht bedruckbar ASCII-Zeichen die sowieso gedruckt wird. Beachten Sie, dass das ASCII-Zeichen entspricht 218
ist nicht bedruckbar. Kasse Hier für die ASCII-Tabelle.
PS Sie können überprüfen, ob bottomRGB[0]
ist druckbar oder wird nicht verwendet isprint()
wie:
cout << isprint(bottomRGB[0]) << endl; // will print garbage value or nothing
Es wird gedruckt 0
(oder false
) zeigt an, dass das Zeichen nicht druckbar ist
Damit Ihr Beispiel funktioniert, müssen Sie es zuerst eingeben, bevor Sie es ausführen cout
:
cout << (int) bottomRGB[0] << endl; // correctly printed (218 for your example)
du brauchst nur cout << +bottomRGB[0]
– phuclv
3. September ’18 um 10:01
.
Die wahrscheinlichste Erklärung ist, dass Ihr Bild eine höhere Bittiefe als 8-Bit hat (die von 0-255 für unsigned int reicht). Weitere Informationen finden Sie unter die Dokumentation..
– scap3y
27. Januar ’14 um 7:05
Ich habe auch versucht, es in CV_8U umzuwandeln, aber ohne Hilfe
– Khawar Ali
27. Januar ’14 um 7:08
Könnten Sie das Originalbild hochladen (nicht mit dem Standard-Uploader, sondern auf einer Site, auf der die Eigenschaften beibehalten werden können)..?
– scap3y
27. Januar ’14 um 7:12
Dies ist das Originalbild: upload.wikimedia.org/wikipedia/commons/4/48/…
– Khawar Ali
27. Januar ’14 um 7:15
Okay, mein Fehler. cout<
– Khawar Ali
27. Januar ’14 um 7:38