Ich habe "rgb8" Format msg über ROS Thema Abonnement geliefert. Wie kann man ein QImage daraus erstellen und das qml Image das Bild darauf anzeigen lassen? Derzeit arbeite ich an dem folgenden Code-Snippet.Bildformat Kompatibilität zwischen ROS QImage
QImage *VideoPlayer::Mat2QImage(cv::Mat const& src)
{
QImage *imgPtr = new QImage((const uchar *) src.data,
src.cols, src.rows, src.step, QImage::Format_RGB888);
imgPtr->bits();
return imgPtr;
}
void VideoPlayer::imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
static int count = 0;
try
{
try {
Mat imgMat = cv_bridge::toCvShare(msg, "rgb8")->image;
delete imgProvider->currentShot;
imgProvider->currentShot = Mat2QImage(imgMat);
...
}
(* currentShot) durch imageRequest (...) Methode aus qml Seite 'Quelle' Eigenschaft fecthed.
Danke, aber mein Qml Aufruf RequestImage() -Methode wie erforderlich. Das Problem ist qml Bild zeigt das übertragene Bild nicht an (ich denke). Also, ich denke, ich bin unwissend auf Bildcodierungsformat oder etwas. In der qml-Datei habe ich diesen Abschnitt: "Image {... source:" image: // images/"+ imageSN ...}" –
1. Haben Sie versucht, das QImage in eine Datei zu speichern und zu verifizieren? 2. Gibt es eine Fehlermeldung in der Debug-Nachricht? – diro
In der Tat habe ich es einfach getan. Es speichert die PNG-Datei korrekt. Dies geschieht durch "imgProvider-> currentShot-> save (" delta.png ");" - Dieser Befehl. Hier ist currentShot ein Zeiger auf ein QImage. –