-
hi quinte17,
vielen dank fuer deinen hinweis
werd's morgen frueh nochmals versuchen.
dank an dich
@kater
falls du schon openmp installiert hast und einen quad-core hast
aus: http://rajorshi.net/blog/2009/05/pro...on-openmp-gcc/
als attachmend multmul.c
compile : cc mutmul -o mutmul -fopenmp
results:
Enter dimension ('N' for 'NxN' matrix) (100-2000): 1000
Populating array with random values...
Completed array init.
Crunching without OMP... took 10.827485 seconds.
Crunching with OMP... took 3.569509 seconds.
ist schon erstaunlich
gruss nomad
-
zu cv3d
Ich musste nur glui.h auskommentieren, dann konnte ich es compilieren. Nur funktionieren... es kommen viele rosa Punkte *G*
Ok, in Zeile 498 reservierst du mit glGenTextures(1, &cameraImageTextureID); bei jedem Frame neuen Speicher, gibts ihn aber nicht mehr frei. So läuft der Speicher voll. Normal kommt sowas in irgendeine glutInit Funktion, würde ich sagen. Da es die aber nicht gibt, habe ich sie vor die glutMainLoop() gesetzt. Funktioniert :)
zum avi File:
Wie der Error schon sagt fehlt dir ein Programm welches mpeg4 abspielen kann. Das ist nicht schlimm, 50% aller Leute denen ich dieses Video gezeigt habe konnten es nicht abspielen. Installier dir einfach vlc oder mplayer, je nach Geschmack. Ach und aktualisiere mal dein Browser auf Version 3 :)
zu demo02.cpp
Ja, kein Bild. Soweit ich das sehe muss man erst die Taste r drücken damit das Kamerabild zu OpenGl hin kopiert wird. Funktioniert nur irgendwie nicht. Aber das abgespeicherte Bild auf der Festplatte seh ich aber.
@openmp
Quadcore ists nicht, aber 4 Rechner mit 2 Opterons drinne. Ich werde es morgen mal ausprobieren. Danke schonmal.
-
hi
@kater:
zu demo02.cpp
war mein fehler: wenn das prog laeuft
1) gesicht frontal zur camera
2) click mit mouse (3x) -> linkes auge -> rechtes auge -> nase
in dieser reihenfolge
3) dann verschwindet das rote fenster
4) und eigentlich sollste sich dann die 3dAxis bewegen
--> hab unterdessen das prog verbessert, synchrones bewegen von kopf und axis.
zu cv3d.cpp
komisch, komisch
1) also das mit dem freigeben hab mir auch schon gedacht
in main hab ich aber ein glutInit(); .-)
Frage: wie bist du vorgegangen:
waer um diesen tip dankbar (code-schnippsel)
2) glui.h ist in diesem fall auch nicht notwendig
(man kann mit glui auch GUI erzeugen) inkl. buttons etc und einen virituellen trackball)
wie in qt (wird aber in der community nicht sehr oft verwendet)
3) versteh ich dich richtig, : du siehst kein Quad mit deiner webcam-texture und im vordergrund eine 3-farbigen 3d-Axis
mit der mouse solltest du den quad bewegen koennen, mit den arrow-tasten die 3dAxis
zu avi-file: sobalrd ich mal mehr zeit habe mach ich das.
zu openmp: mit dem demo-prog wollt ich nur mal testen ob bei mir wirklich dann 4 cores
arbeiten.
@quinte17
compile fehler:
hab also in einem folder folgende
source-files:
main.cpp
myserial.cpp
myserial.h
qextserialport.h
hab dann mit Qt ein neues Project file
erzeugt
anschliessend die obigen files hinzugefuegt.
dann ein build mit *.pro via qtcreator
fehlermeldungen zuhauf:
durch meine fehlenden qt & c++ kenntnise hab ich jetzt
interpretations schwierigkeiten.
geb glaub ich mal auf....
oder benutz meine seriellen c-funktionen
konnte dann die fehler-meldung mit einem "make" extrahieren
ss. unten
an alle
gruss nomad
Code:
In file included from myserial.h:8,
from myserial.cpp:2:
./qextserialport.h:18: error: expected class-name before ‘{’ token
./qextserialport.h:22: error: expected `)' before ‘const’
./qextserialport.h:23: error: ‘PortSettings’ has not been declared
myserial.cpp: In constructor ‘MySerial::MySerial()’:
myserial.cpp:10: error: ‘class QextSerialPort’ has no member named ‘setBaudRate’
myserial.cpp:10: error: ‘BAUD9600’ was not declared in this scope
myserial.cpp:11: error: ‘class QextSerialPort’ has no member named ‘setDataBits’
myserial.cpp:11: error: ‘DATA_8’ was not declared in this scope
myserial.cpp:12: error: ‘class QextSerialPort’ has no member named ‘setStopBits’
myserial.cpp:12: error: ‘STOP_1’ was not declared in this scope
myserial.cpp:13: error: ‘class QextSerialPort’ has no member named ‘setParity’
myserial.cpp:13: error: ‘PAR_NONE’ was not declared in this scope
myserial.cpp:14: error: ‘class QextSerialPort’ has no member named ‘setFlowControl’
myserial.cpp:14: error: ‘FLOW_OFF’ was not declared in this scope
myserial.cpp:15: error: ‘class QextSerialPort’ has no member named ‘setTimeout’
myserial.cpp: In destructor ‘virtual MySerial::~MySerial()’:
myserial.cpp:22: error: ‘class QextSerialPort’ has no member named ‘close’
myserial.cpp: In member function ‘virtual void MySerial::run()’:
myserial.cpp:34: error: ‘class QextSerialPort’ has no member named ‘open’
myserial.cpp:39: error: ‘class QextSerialPort’ has no member named ‘flush’
myserial.cpp: In member function ‘void MySerial::pollSerial()’:
myserial.cpp:56: error: ‘class QextSerialPort’ has no member named ‘isReadable’
myserial.cpp:60: error: ‘class QextSerialPort’ has no member named ‘bytesAvailable’
myserial.cpp:63: error: ‘class QextSerialPort’ has no member named ‘read’
make: *** [myserial.o] Error 1
-
zu cv3d.cpp
also du musst glGenTextures(1, &cameraImageTextureID); einfach eine Zeile über glutMainLoop(); setzen. Und da wo sie vorher stand entfernen. In der Summe hast du dann nur einmal glGenTextures(1, &cameraImageTextureID); im ganzen Code, da du ja auch nur eine Textur brauchst.
Und Entschuldigung für alle nachfolgenden Leser, das ist nur eine quick&dirty Lösung. Nicht das jemand denkt, wir würden hier nur schlechten Code machen ;)
zu demo02.cpp
wie gesagt ich bekomme kein Bilder der Kamera. Es gehen zwei Fenster auf, das eine schwarz das andere weis. Ich schaue mal den Code genauer an warum da nichts kommt.
openmp wurde heute auch nicht. Es gab ein Stromausfall heute nacht um 2Uhr und dann durfte ich mich eine Stunde lang mit alternate auseinander setzten wegen 5 dumme Kabel.
Morgen noch eine Prüfung schreiben, (dann etwas ausnüchtern) und dann wird es schnell weiter gehen.
Zu deinem Compile Error.
Schau mal in ./qextserialport.h Zeile 18. Da fehlt irgendwo ein Komma. Vllt. auch eine Zeile davor oder in einer andern Datei. Wenn du eine Klasse dir machst muss auch ein Komma da sein class { }; <--
-
hi kater,
vielen dank fuer deine antworten,
trotz des stresses.
viel glueck bei den klausuren
versuch gerade das camheadsystem openmp faehig zu machen, gott der aerger
also noch einen schoenen abernd
gruss
nomad
-
also mal langsam :)
bitte ALLE *.cpp und *.h dateien von qextserialport in dein projekt hinzufügen... ist das so schwer? :D
und wie gesagt, die eine header datei anpassen, so dass die für deine architektur richtige datei includiert wird. ansonsten kann es nicht laufen, da der code einfach fehlt... (wir haben das ganze nun nicht als lib eingebunden sondern direkt als code)
-
hi quinte 17
eigentlich nicht (schwer.....:-)
gleich im anschluss werd ichs nochmals versuchen
vielen dank fuer deine geduld und deine tips
gruss nomad
-
hi quinte17,
ich geb endgueltig auf.
da hab ich im augenblick nicht die nerven dazu....
und qextserialport ist ja nicht zwingend notwendig
habs nochmals probiert ss. unten
falls ich mit qt weitermachen sollte ???
werd ich meine c-low-leve-functionen (rs232) einsetzen.
also:
inhalt meines qextserialport-Projects
Code:
--------------------------------------
qtserial2.pro
main.cpp
main.o
qtserial2.pro.user
myserial.h
posix_qextserialport.h
qextserialbase.h
qestserialport.h
myserial.cpp
posix_qexterialport.cpp
qextserialbase.cpp
qexterialport.cpp
Makefile
----------------------------
-> build clear
-> rebuild
-> build
waehrend: build: 2 things:
- overriding commands for target 'posix_qestserialport.o
- ignoring old commands for target posix_qestserialport.o
dann auf der console ein 'make' fuer die fehlermeldungen: ss. unten
also nichts fuer ungut und vielen dank fuer deine hilfe
gruss nomad
Code:
---------------
make
Makefile:214: warning: overriding commands for target `posix_qextserialport.o'
Makefile:210: warning: ignoring old commands for target `posix_qextserialport.o'
g++ -c -m64 -pipe -g -Wall -W -D_REENTRANT -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include -I. -I. -o myserial.o myserial.cpp
In file included from myserial.h:8,
from myserial.cpp:2:
./qextserialport.h:12:32: error: win_qextserialport.h: No such file or directory
In file included from myserial.h:8,
from myserial.cpp:2:
./qextserialport.h:16: error: expected class-name before ‘{’ token
./qextserialport.h:20: error: expected `)' before ‘const’
./qextserialport.h:21: error: ‘PortSettings’ has not been declared
myserial.cpp: In constructor ‘MySerial::MySerial()’:
myserial.cpp:10: error: ‘class QextSerialPort’ has no member named ‘setBaudRate’
myserial.cpp:10: error: ‘BAUD9600’ was not declared in this scope
myserial.cpp:11: error: ‘class QextSerialPort’ has no member named ‘setDataBits’
myserial.cpp:11: error: ‘DATA_8’ was not declared in this scope
myserial.cpp:12: error: ‘class QextSerialPort’ has no member named ‘setStopBits’
myserial.cpp:12: error: ‘STOP_1’ was not declared in this scope
myserial.cpp:13: error: ‘class QextSerialPort’ has no member named ‘setParity’
myserial.cpp:13: error: ‘PAR_NONE’ was not declared in this scope
myserial.cpp:14: error: ‘class QextSerialPort’ has no member named ‘setFlowControl’
myserial.cpp:14: error: ‘FLOW_OFF’ was not declared in this scope
myserial.cpp:15: error: ‘class QextSerialPort’ has no member named ‘setTimeout’
myserial.cpp: In destructor ‘virtual MySerial::~MySerial()’:
myserial.cpp:22: error: ‘class QextSerialPort’ has no member named ‘close’
myserial.cpp: In member function ‘virtual void MySerial::run()’:
myserial.cpp:34: error: ‘class QextSerialPort’ has no member named ‘open’
myserial.cpp:39: error: ‘class QextSerialPort’ has no member named ‘flush’
myserial.cpp: In member function ‘void MySerial::pollSerial()’:
myserial.cpp:56: error: ‘class QextSerialPort’ has no member named ‘isReadable’
myserial.cpp:60: error: ‘class QextSerialPort’ has no member named ‘bytesAvailable’
myserial.cpp:63: error: ‘class QextSerialPort’ has no member named ‘read’
make: *** [myserial.o] Error 1
linux-753o:~/Desktop/mrunixQT_serialSource/qtserialtest/qtserial2 #
--------------------------------
-
hi kater,
also ich hab deinen algo Pavlidis Kontur gesucht und gefunden
at: http://www.fbmn.fh-darmstadt.de/home...ode/bv1_6.html
iss'es dieser?
nach dem 1. durchlessen erinnert mich dass an den opencv-contur-Algo
opencv -> conturs.c
gruss nomad
-
Ja genau das ist der. Da studiere ich gerade :)
Ich habe mal opemp installiert und das Programm mit der Matrixmultiplikation gestartet, funktioniert. Vllt. baue ich noch eine Statusanzeige ein damit man auch mal größere Matrizen nutzen kann.
Jetzt muss ich nur noch irgendwie das mit dem Cluster verbinden.
-
hi kater,
alles gut ueberstanden?
schoen dass bei dir die installation
von openmp ok ist.....
hab heute versucht openmpi zu installieren
so weit so gut
hat eine kleine ewigkeit gedauert
aber hab propleme
das erste testprog zu compilieren
ss. foren <sprachen, Standard APi>
--> openmpi - fragen wegen mpicc-compile
2. um an openmp weiter zu arbeiten,
hab ich mein CamHeadSystem-prog
um openmp-compile direktiven erweitert
funzzt also opencv + openmp
dann weil ich ja timing-probleme habe
das prog mit einer simulierten RS232-schnittstelle
ausgestattet, jetzt verliert der algo wieder
den focus -> wie gewuenscht. Hi,hi
3) nachmittags noch ein openmp + opencv Prog-gefunden
unter:
http://code.google.com/p/derin-deli-mavi/downloads/list
als attachment: openmp_test-cpp.txt
noch ein schoener abend
gruss
nomad
-
hi kater
betr. cluster verbindungen....
es gibt im netz einige anlaufstellen
ibm, sun, university of cambridge
livermore labs -> HPC
oder google mal openmp + cluster
gruss nomad
-
Hai,
ich habe schon nach openmp und cluster gesucht, aber das geht nur mit dem Intel compiler, ich will aber unbedingt den GNU Compiler nutzen.
Also es hängt wohl davon ab welche Software auf dem Cluster seine Arbeit verrichten soll, dann entscheide ich wie es weiter geht.
Übrigens hätte ich nie gedacht, dass es so einfach ist mehrere Kerne zu benutzen. Einfach eine Zeile mehr vor die zeitintensive For Schleife gepackt und schon gehts fast doppelt so schnell :)
-
hi kater
schoen von dir zu hoeren,
hab mich heute bei openmp.org im forum registrieren lassen
da hab ich dann was.
es gibt bei openmp.org rechts auf der seite eine doku
mit beispielen nennt sich Using-OpenMP-Examples-Distr.zip
mit etlichen demos.
musste am make-file einwenig drehen damit fuer linux ausfuehrbare datein gemacht werdne
den gnu-compiler kannst du einstellen
laeuft super....
bin jetzt gerade drann fuer mein problem die ersten progs zu entwickeln
mit 2 parallelen threads
erkenntnis: wie loriot schon sagte "na wo sind sie denn" .-)
gruss nomad und ein schoenes weekend
-
hi
hab heute zum erst mal probiert
wie ich openmp bei meinem CamHeadSystem
einsetzen kann
hab da noch einige Probleme
folgendes:
in dem untenstehenden pseudo-code und im attachmend
habe ich festgestellt:
dass GrabCam & der Algo ca. .
- LK = took 0.010723 seconds.
- COM = took 0.519834 seconds.
benoetigen
Also kommt OpenCV aus dem tritt und verliert den Focus
jetzt wuerd ich gern
dass:
- grabWebCamImages()
- lucasKanade-Algo(frame)
in einem unterbrechungsfreien openMP-Thread laufen
und trotzdem der comController sobald neue werte (plmx,plmy) vorhanden sind
diese an den microcontroller schickt.
hast du oder selbstverstaendliche auch andere, ideen und tips wie ich das
entwickeln kann
gruss nomad
das ist ein wenig pseudo-code
Code:
main()
{
initialisierungen()
while
{
grabWebCamImages()
lucasKanade-Algo(frame)
{
set-MausPoints
for_loop
{
-> output: plmx,plmy (1 lucasKanadePunkt (Nase)
}
}
comControl()
{
input: plmx,plmy
calcPoints : convert x,y into drehwinkelX, drehwinkelY
convert drehwinkel into servoPulses
convert int to String
-> output: servoPulse1, servoPulse2 as string
Call: comSendData()
}
comSendData()
{
forLoop 2x
{
Sender() // sendDatas to microController
Reader() // wait on <5> acknowledge
}
}
}
}