qt+eclipse+opencv programm wird nicht ausgeführt

Alles rund um die Programmierung mit Qt
Antworten
ecoplus
Beiträge: 11
Registriert: 22. September 2010 15:03

qt+eclipse+opencv programm wird nicht ausgeführt

Beitrag von ecoplus »

hallo erstmal,

ich habe ein riesen großes problem. hab auch schon diesbezüglich das forum durchsucht ähnliche beiträge gefunden,
die mir jedoch nicht weiterhelfen. un so eröffne ich jetzt ein neues thema in der hoffnung das jemand eine lsg für
dieses problem hat.

nebenbei fange ich erst an für ein project mich in c++ qt und opencv einzuarbeiten. deshalb vielcht auch
die einfache ausdrucksweise.


ich möchte unter eclipse ein programm zum laufen kriegen welches qt und opencv verwendet.
folgende sachen wurden dazu installiert bzw stehen zur verfügung:

- eclipse ganymede für c++
- QT SDK
- Qt Eclipse Integration
- opencv 2.0
- MinGW

alles soweit nach tutorials eingerichtet was auch wunderbar geklappt hat... nun zur genaueren beschreibung:

- in eclipse neues qt konsolen project gestartet

- in diesem project über die eigenschaften -> C/C++ include paths and symbols -> add external include path -> C:\OpenCV2.0\include\opencv eingefügt

- in immer noch in den eigenschaften -> C/C++ project paths -> add external libery -> C:\OpenCV2.0\lib
alle libcv200.dll.a usw. dateien hinzugeügt sowie alle dateien für debug (cv200d.lib usw.) und release (cv200.lib usw.)

- danach ein neues c++ project -> convert to a C/C++ Make Project (das besagte qt programm)

- in der main.cpp datei folgendes programm eingefügt (gibt ein fenster aus auf der das bild der angeschlossenen
webcam erscheint)


- in der dazugeörigen .pro datei folgende ergänzungen gemacht

- danach alles compiliert

Code: Alles auswählen

mingw32-make debug 
c:\Qt\2010.05\qt\bin\qmake -o Makefile bla2.pro
WARNING: c:\Users\labbat\Documents\eclipse\bla2\bla2.pro:6: Unescaped backslashes are deprecated.
WARNING: c:\Users\labbat\Documents\eclipse\bla2\bla2.pro:6: Unescaped backslashes are deprecated.
WARNING: c:\Users\labbat\Documents\eclipse\bla2\bla2.pro:6: Unescaped backslashes are deprecated.
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Users/labbat/Documents/eclipse/bla2'
mingw32-make[1]: Nothing to be done for `first'.
mingw32-make[1]: Leaving directory `C:/Users/labbat/Documents/eclipse/bla2'
- dann kommt aber nur manchmal der fehler Unescaped backslashes are deprecated (vermutlich in der .pro datei
was aber glaube ich nicht so schlimm ist oder?)

- wenn ich versuche das programm zu starten kommt keine fehlermeldung sondern es steht nur folgendes da wenn
ich das consolen fenster aufrufe (sollte eigentlich das bild mit der webcam kommen):

Code: Alles auswählen

<terminated> test.exe[C/C++ Local Application] C:\Users\...\Documents\eclipse\test\debug\test.exe
nebenbei andere programme wie z.b. hello world in dieser konstellation funktionieren un geben auch den inhalt in der console aus.
auch funktioniert das programm mit der webcam ohne qt eclispe integration.

jetzt habe ich euch ganz schön zugetextet hoffe aber es war halbwegs verständlich und vieleicht kann mir jemand bei der lösung meines
problems helfen.

besten dank im vorraus
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Und was passiert wenn Du das executable auf der Kommandozeile ausführst?
*.lib sind für msvc - du brauchst nur die *.dll.a
Wie sieht die main.cpp aus?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
ecoplus
Beiträge: 11
Registriert: 22. September 2010 15:03

Beitrag von ecoplus »

hallo christian,

main.cpp sieht so aus:

Code: Alles auswählen

#include <QtCore>
#include <QCoreApplication>
#include "cv.h"
#include "highgui.h"
#include <iostream>
#include <stdio.h>


using namespace std;

int main(int argc, char *argv[])
{

	QCoreApplication a(argc, argv);

	CvCapture *capture = 0;

	    IplImage  *frame = 0;
	    int       key = 0;

	    // initialize camera
	    capture = cvCaptureFromCAM( 0 );

	    // always check
	    if ( !capture ) {
	        fprintf( stderr, "Cannot open initialize webcam!\n" );
	        return 1;
	    }

	    // create a window for the video
	    cvNamedWindow( "result", CV_WINDOW_AUTOSIZE );

	    while( key != 'q' ) {

	        // get a frame
	        frame = cvQueryFrame( capture );

	        // always check
	        if( !frame ) break;

	        // display current frame
	        cvShowImage( "result", frame );

	        // exit if user press 'q'
	        key = cvWaitKey( 1 );

	    }

	    // free memory

	    cvDestroyWindow( "result" );
	    cvReleaseCapture( &capture );
		cout <<  "test \n";

	    return a.exec();

}
hatte vergessen den code vom .pro file zu posten, sieht so aus:

Code: Alles auswählen

TEMPLATE = app
TARGET = bla2 

QT        += core 

HEADERS   += "C:\OpenCV2.0\include\opencv\cv.h" "C:\OpenCV2.0\include\opencv\highgui.h"
SOURCES   += main.cpp
FORMS	  +=
RESOURCES += 
INCLUDEPATH += "C:\OpenCV2.0\include\opencv"
CONFIG += console
LIBS += -L"C:\OpenCV2.0\lib" -lcv200 -lcvaux200 -lhighgui200 -lcxcore200"
1. also brauch ich bei den project eigenschaften nur noch die .dll.a dateien hinzufügen und die debug/release .lib dateien weglassen; richtig?

in der kommandozeile geht es (hab es dort manuell compeliert) aber auch nur dieses prog. wenn ich das HelloWorld pro ausführen will das geht wiederum nicht.

kommandozeile:

Code: Alles auswählen

Microsoft Windows [...]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

C:\Users\...>cd ....

C:\Users\...\...>cd eclipse

C:\Users\...\...\eclipse>cd bla2

C:\Users\...\...\eclipse\bla2>mingw32-make
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Users/.../.../eclipse/bla2'
mingw32-make[1]: Nothing to be done for `first'.
mingw32-make[1]: Leaving directory `C:/Users/.../.../eclipse/bla2'

C:\Users\labbat\Documents\eclipse\bla2>qmake
WARNING: c:\Users\labbat\Documents\eclipse\bla2\bla2.pro:6: Unescaped backslashe
s are deprecated.
WARNING: c:\Users\labbat\Documents\eclipse\bla2\bla2.pro:6: Unescaped backslashe
s are deprecated.
WARNING: c:\Users\labbat\Documents\eclipse\bla2\bla2.pro:6: Unescaped backslashe
s are deprecated.

C:\Users\...\...\eclipse\bla2>cd debug

C:\Users\...\...\eclipse\bla2\debug>gdb bla2
GNU gdb (GDB) 7.1
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from C:\Users\...\...\eclipse\bla2\debug/bla2.exe...don
e.
(gdb) r
Starting program: C:\Users\l...\...\eclipse\bla2\debug/bla2.exe
[New Thread 10076.0x20ec]
[New Thread 10076.0x267c]
[New Thread 10076.0x46b0]
[New Thread 10076.0x41e4]
[New Thread 10076.0x1e98]
[New Thread 10076.0x31bc]
[New Thread 10076.0x4b48]
test

Program exited with code 01.
(gdb) q

C:\Users\...\...\eclipse\bla2\debug>
nach

Code: Alles auswählen

[New Thread 10076.0x4b48]
öffnet sich wie gesagt das fenster mit dem bild der webcam, danach gebe ich noch das wort "test" aus

der befehl

Code: Alles auswählen

C:\Users\...\...\eclipse\bla2>mingw32-make
die ausgabe dafür in der komanndozeile sah auch mal anders aus, weis aber nicht mehr warum nur noch die ausgabe kommt vom obigen code. vieleicht kannst du mir ja sagen worin der unterschied besteht

Code: Alles auswählen

C:\Users\...\...\eclipse\bla2>mingw32-make
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Users/labbat/Documents/eclipse/bla2'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"c:\Qt\2010.05\qt\inclu
de\QtCore" -I"c:\Qt\2010.05\qt\include\QtGui" -I"c:\Qt\2010.05\qt\include" -I"c:
\OpenCV2.0\include\opencv" -I"c:\Qt\2010.05\qt\include\ActiveQt" -I"debug" -I"c:
\Qt\2010.05\qt\mkspecs\default" -o debug\main.o main.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -Wl,-subsystem,console -mthreads -Wl -o debug\bla2.exe debug/main.o  -L"c:\Qt
\2010.05\qt\lib" -LC:\OpenCV2.0\lib -lcv200 -lcvaux200 -lhighgui200 -lcxcore200
-lQtGuid4 -lQtCored4
mingw32-make[1]: Leaving directory `C:/Users/.../.../eclipse/bla2'

nebenbei wenn ich den befehl

Code: Alles auswählen

C:\Users\...\...\eclipse\bla2\debug>gdb bla2
ausführe komm ich nicht mit

Code: Alles auswählen

(gdb) q
wieder zurück sondern muss das programm im taskmanager beenden danach kommt die fehlermeldung

Code: Alles auswählen

Program exited with code 01.
un dann kann ich beenden. vieleicht gibts dafür ne elegantere lsg.


als letztes wenn ich das helloworld programm nach obigen schema ausführen will bekomme ich keine ausgabe

hoffentlich hab ich dich jetz nich total verwirrt, wie gesagt es geht immer noch um das problem vom ersten post.

vielen dank
Antworten