Hallo zusammen,
ich hab im Rahmen eines Hochschulprojekts ein kleines Problem mit QT
ich habe folgende Klasse abgeleitet von der QThread klasse die mir als Basisklasse zum Aufnehmen von Kamera bildern dient.
#include <QThread>
class RecordBase : public QThread
{
public:
RecordBase(QObject *apParent = 0);
~RecordBase();
//...
}
Nun möchte ich Pro kamera Objekt welches auch je ein QThread zur aufnahme hat, ein neues QT Fenster erzeugen in dem das Live bild der kamera angezeigt wird. Der Buffer in dem die aktuelle Bild information steckt ist bereits vorhanden. und ist in dieser form:
char *lpImageBuffer = (char *) lCapture.Buffer();
vielen dank für eine hilfestellung beziehungsweise etwas code wie ich dann für je einen dieser Threads ein neues fenster erzeug und wie das dann aussehen muss das dort ein live capture von dem ImageBuffer bild abläuft.
mfg
marvin
Pro QThread ein neues Fenster erzeugen+ein video anzeigen
Such mal hier im Forum nach opencv, dann stößt du nach ein bissel lesen auf eine Funktion, die dir ein Ipimage in ein QImage umwandelt.
Dann versuch doch mal in denem Thread ein QLabel zu erstellen und es mit show() o.ä. anzeigen zu lassen. Dem Label kannste dann immer in einer Schleife ein neues QPixmap zuordnen, welches du aus dem QImager erstellen kann.
Dann versuch doch mal in denem Thread ein QLabel zu erstellen und es mit show() o.ä. anzeigen zu lassen. Dem Label kannste dann immer in einer Schleife ein neues QPixmap zuordnen, welches du aus dem QImager erstellen kann.
Nein, das geht nicht, versuchen kann er es trotzdem malkater hat geschrieben:Dann versuch doch mal in denem Thread ein QLabel zu erstellen und es mit show() o.ä. anzeigen zu lassen. Dem Label kannste dann immer in einer Schleife ein neues QPixmap zuordnen, welches du aus dem QImager erstellen kann.
Man kann nur aus dem Main-Thread (QApplication::instance()->thread()) zeichnen. Das heißt z.B. QLabel::setText(), update(), aber auch ein Label neu erstellen.
Wenn du aus einem anderen Thread als dem Hauptthread an die GUI ran willst, musst du dies über SIGNAL/SLOT erledigen. Wenn neue Daten anstehen, ein schnelles emit(), und im Hauptthread wieder abfangen.
QPixmap ist auch nicht ganz unproblematisch. Wenn du aus einem anderen Thread auf so eines malen willst, muss das Pixmap auch in jenem erstellt worden sein. Mit QImage hast du auch das Problem nicht.