Für meine Anwendung wollte ich Bilder kontinuierlich anzeigen. Aber ich fand heraus, dass ich ungefähr 30ms brauchte, um qimage in qpixmap zu konvertieren. Dies hat sich auf meine Bildrate ausgewirkt, daher möchte ich eine effektivere Möglichkeit finden, mein Bild mit QtGui zu zeigen. Welche Methode kann ich verwenden? Könnte mir jemand helfen?QBild zu QPixmap ist teuer
Antwort
Wenn Sie die Dokumentation gut lesen, wird alles erklärt.
- QImage ist Design für IO-Handling und zur direkten Pixel Zugriff und Manipulation
- QPixmap entwickelt und optimiert für die Bilder auf dem Bildschirm
Wenn Sie nur Last Bild zeigt und es zeigen (ohne Bearbeiten Sie Ihr Bild und laden Sie es als QPixmap zwischen.
Aber wenn Sie die Manipulation machen, nicht viel, was Sie tun können. Vielleicht können Sie versuchen, das Bild direkt auf QPainter des Widgets zu malen. Ich weiß nicht, ob es schneller ist, als Bild in Pixmap umzuwandeln und es zum Widget zu malen.
Ich war vor ein ähnliches Problem konfrontiert und die beste Lösung, die ich gefunden habe, ist eine OpenGL (QOpenGLWidget
+ glDrawPixels()
) von QImage
QPixmap
zu konvertieren, anstatt zu verwenden.
Vielen Dank. Ich werde diese Methode versuchen – betterorbest
Sie müssen die Konvertierung nicht durchführen. Stellen Sie sicher, dass das Bild im Format backing store und einfach drawImage
auf dem Widget ist. Es ist so schnell wie möglich.
Mit dem Standard-Raster-Backend ist die QPixmap
ein sehr dünner Wrapper um eine QImage
. Solange das Bild das richtige Format hat, ist die Konvertierung ein No-Op.
das Format mit QPixmap
kompatibel zu erhalten, können Sie den folgenden Code verwenden:
QImage::Format pixmapFormat() {
static auto format = QPixmap{1,1}.toImage().format();
return format;
}
- 1. cv :: Mat zu QBild und zurück
- 2. Convert QPixmap zu Numpy
- 3. Wie teuer ist ST_GeomFromText
- 4. Ist es teuer, Datenbankverbindungen offen zu halten?
- 5. Wie teuer ist Typschluss?
- 6. Ist NSTimer teuer?
- 7. QVariant zu QIcon/QPixmap/QImage
- 8. Teuer, System.Numerics.VectorX zu wickeln - warum?
- 9. QPixmap und SVG
- 10. Wie teuer es ist, ein neues UIWebView zu erstellen
- 11. Wie teuer ist BufferedReader.read()? Wie lange zu schlafen, zwischendurch?
- 12. Ist <Collection> .Count Teuer zu verwenden?
- 13. QML Hintergrund von QPixmap
- 14. QPixmap eines QGraphicsTextItems
- 15. (Warum) Ist Reflection in .Net so teuer?
- 16. Warum ist NHibernate AutoFlush so teuer?
- 17. Wie "teuer" ist Oracle Enterprise Manager?
- 18. Load Blob Bilddaten in QPixmap
- 19. Entfernen von Qpixmap aus QGraphicsScene
- 20. CPU teuer Javascript
- 21. Wie teuer sind Fäden?
- 22. Ist die CPU-Bandbreite bei Google App Engine einfach zu teuer oder ist es mein Code?
- 23. Wie teuer sind MySQL-Ereignisse?
- 24. [Qt 5.6] [QPixmap] "schwarzes Bild mit farbigen Pixel" in QLabel Immer wenn ein QPixmap darin
- 25. WCF-Dienst: Ist nicht zu teuer, WCF-Dienst für sehr einfache Schnittstellenimplementierung zu verwenden
- 26. Wie teuer sind NULL-Zeigerargumente?
- 27. Wie verwende ich QPainter auf QPixmap
- 28. Ist das Abfragen in jQuery teuer, und gibt es Alternativen?
- 29. Sind Enzyme/Reacts seicht teuer?
- 30. ASP.NET Wie teuer ist es, eine Anwendungsvariable mehrmals aufzurufen?
Vielen Dank für Ihre Beratung. Ich habe den Eindruck, dass das Zeichnen mit dem Maler langsamer ist, aber ich werde es versuchen – betterorbest
Ja, das Zeichnen mit QImage mit Maler ist eigentlich langsamer als das Konvertieren in QPixmap und Zeichnen der Pixmap (getestet mit Qt 5.4). – Tomas