Hallo Forum,
zur Zeit schreibe ich an meiner Studienarbeit, für die ich gerne Qt verwenden möchte, das ein Kamerabild einer Webcam anzeigen soll. Als Zugriff auf die Webcam verwende ich zu Zeit DsVideoLib, das liefert mir die Daten dann als unsigned char*. Doch wie zeige ich das Bild permanent an, also wie lese ich permanent aus diesem Array aus und schreibe es in ein QImage?
Gibt es noch andere Möglichkeiten komfortabel an ein Kamerabild zu kommen?
Viele Dank schonmal für die Mühen!
Quine
mein bisheriger Versuch (nur der interessante Ausschnitt) sah so aus (ist mein allererster QT-Code *duck*):
QApplication *app = new QApplication(argc, argv);
QImage *image = new QImage();
image->loadFromData(camera1->getFrame(),(320*240),0);
QPixmap *pixm = new QPixmap();
pixm->fromImage(*image,0);
QWidget *widget = new QWidget();
QLabel *label = new QLabel("label", widget, 0);
label->setPixmap(*pixm);
label->show();
widget->show();
return app->exec();
Qt und WebCam
Hallo,
das QImage brauchst gar nicht unbedingt, du kannst bei QPixmag
auch direkt sagen loadFromData().
komfortabel ein Kamerabild ist dies Möglichkeit eigentlich schon ...
zum Anzeigen würde ich paintEvent() überschreiben, diese wird
immer bei repaint() aufgerufen.
Dann kannst du immer wenn du ein neues bild hast repaint() aufrufen und es wird angezeigt.
Hab auch schon gelesen, dass es mit OpenGL klassen von Qt auch gemacht werden kann und sogar besser sei.
Setzt aber voraus, dass man sich mit OpenGL auskennt.
grüße
goofy
das QImage brauchst gar nicht unbedingt, du kannst bei QPixmag
auch direkt sagen loadFromData().
komfortabel ein Kamerabild ist dies Möglichkeit eigentlich schon ...
zum Anzeigen würde ich paintEvent() überschreiben, diese wird
immer bei repaint() aufgerufen.
Dann kannst du immer wenn du ein neues bild hast repaint() aufrufen und es wird angezeigt.
Code: Alles auswählen
void paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPixmap pic;
pic.loadFromData(camera1->getFrame(),(320*240),0);
painter.drawPixmap(0, 0, pic);
}Setzt aber voraus, dass man sich mit OpenGL auskennt.
grüße
goofy