cvShowImage von openCV innerhalb von QT Programm
Verfasst: 26. März 2009 12:35
Hallo,
Ich habe ein QT4 Programm am laufen und öffne aus diesem heraus ein neues Fenster welches via cvShowImage ( aus openCV ) ein Bild darstellt. Ich setze auch cvWaitKey(0) um das neue Fenster solange anzuzeigen, bis ich eine Taste drücke.
Sobald ich eine Taste drücke stürzt mir das ganze Programm aber ab.
Starte ich denn openCV code direkt , also nicht aus QT heraus, klappt alles wunderbar.
Woran kann das liegen?
Sollte der openCV allenfalls in einem eigenen Thread gestartet werden?
Hier ein minimal Beispiel:
pro file:
Bild wird korrekt angezeigt, falls dann aber eine Tastatureingabe erfolgt, hängt sich das Programm auf. cvWaitKey(0) soll das Bild solange anzeigen bis eine Taste gedrückt wird, und dann weitergehen im Code.
ps. die gleiche Frage habe ich auch hier gestellt: http://www.c-plusplus.de/forum/posting- ... 86160.html - allerdings noch keine Antwort erhalten.
Ich habe ein QT4 Programm am laufen und öffne aus diesem heraus ein neues Fenster welches via cvShowImage ( aus openCV ) ein Bild darstellt. Ich setze auch cvWaitKey(0) um das neue Fenster solange anzuzeigen, bis ich eine Taste drücke.
Sobald ich eine Taste drücke stürzt mir das ganze Programm aber ab.
Starte ich denn openCV code direkt , also nicht aus QT heraus, klappt alles wunderbar.
Woran kann das liegen?
Sollte der openCV allenfalls in einem eigenen Thread gestartet werden?
Hier ein minimal Beispiel:
Code: Alles auswählen
#include "window.h"
#include <highgui.h>
Window::Window(){
setText("Show Image");
connect(this, SIGNAL(clicked()),this,SLOT(image()));
}
void Window::image() {
IplImage *imgA = cvLoadImage("b4.jpg");
cvNamedWindow("Bild", 0);
cvShowImage("Bild", imgA);
cvWaitKey(0);
cvReleaseImage(&imgA);
cvDestroyWindow("Bild");
}
Code: Alles auswählen
#ifndef WINDOW_H_
#define WINDOW_H_
#include <qpushbutton.h>
class Window : public QPushButton
{
Q_OBJECT
public :
Window();
public slots:
void image();
};
#endif /* WINDOW_H_ */Code: Alles auswählen
#include <qapplication.h>
#include <window.h>
int main( int argc, char **argv )
{
QApplication app( argc, argv );
Window * win = new Window();
win->show();
return app.exec();
}Code: Alles auswählen
######################################################################
# Automatically generated by qmake (2.01a) Do Mrz 26 09:07:47 2009
######################################################################
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += . /opt/local/include/opencv #opencv include dateien
LIBS += -lhighgui -lcxcore #opencv libraries
# Input
HEADERS += window.h
SOURCES += main.cpp window.cppBild wird korrekt angezeigt, falls dann aber eine Tastatureingabe erfolgt, hängt sich das Programm auf. cvWaitKey(0) soll das Bild solange anzeigen bis eine Taste gedrückt wird, und dann weitergehen im Code.
ps. die gleiche Frage habe ich auch hier gestellt: http://www.c-plusplus.de/forum/posting- ... 86160.html - allerdings noch keine Antwort erhalten.