Ich bekomme Bilddaten von einem Stream.
Diese Daten können, immer unterschiedliche Formate und Codecs, haben.
Das Problem mit verschiedenen Codecs (H264, theora ...) umzugehen habe ich bereits gelöst!
Jetzt habe ich nur noch das Problem das,das Format entweder bgr8 oder rgb8 ist, qt bietet aber nur eine direkte Umwandlung in RGB.
Siehe http://doc.qt.digia.com/qt-maemo/qimage.html -> Member Type Documentation
Umwandlung und Umgang mit den formaten habe ich so gemacht.
Liste mit den Formaten:
img_format_table = {'bgr8': QImage.Format_RGB888, 'mono8': QImage.Format_Indexed8, 'rgb8': QImage.Format_RGB888}
Umwandlung der Bilddaten in ein "Bild" :
picture = QImage(self.__imageData.data,self.__imageData.width,self.__imageData.height,format)
Um jetzt aus den bgr Daten wieder rgb Daten zu gibt es die Funktion QImage.rgbSwapped().
Ich weiß nun nicht welches Format empfangen wird und da bei der Umwandlung der Daten automatisch das richtige Format ausgewählt wird, weiß ich nicht um welches Format(bgr oder rgb) es sich handelt und somit nicht wann ein QImage.rgbSwapped() durchgeführt werden müsste, um ein korrektes Bild zu erhalten.
Gibt es eine Möglichkeit heraus zu finden welches Format beim verwendet umwandeln verwendet wir, oder welches Format meine Daten besitzen ?
Image Datenformart
Ohne jetzt wirklich mit QImages schon gearbeitet zu haben gibt dir die Methode format() auf einem QImage ein Integer zurück, den du dann auswerten kannst:
http://qt-project.org/doc/qt-4.8/qimage ... ormat-enum
http://qt-project.org/doc/qt-4.8/qimage ... ormat-enum
Code: Alles auswählen
In [1]: from PyQt4.QtGui import QImage
In [2]: image = QImage("test.png")
In [3]: image.format()
Out[3]: 4
So wie du es dir gedacht hast, würde es nicht funktioniert, da in diesem Fall immer das gleiche Format herauskommen würde nämlich -> 13(RGB...).
Aber ich habe das Problem bereist selber gelöst.
Man kann sich ganz einfach mit Daten.encoding den Datentyp ausgeben lassen.
Hatte es sogar schon verwendet aber vollkommen übersehen -.-
http://www.tutorialspoint.com/python/string_encode.htm
Aber ich habe das Problem bereist selber gelöst.
Man kann sich ganz einfach mit Daten.encoding den Datentyp ausgeben lassen.
Hatte es sogar schon verwendet aber vollkommen übersehen -.-
http://www.tutorialspoint.com/python/string_encode.htm
@Tyll: Der Link in dem Beitrag macht keinen Sinn. Zeichenkettenkodierung ist etwas ganz anderes als was Du hier gerade machen willst. Und wenn Dein Datenobjekt tatsächlich eine `encoding`-Methode oder Attribut hat, dann hätte Dir bei der Frage hier auch niemand helfen können, weil wir ja gar nicht wissen wie dieser Datentyp aussieht.