Ich möchte von einer Microsoft Kinect Kamera mit C++ das Videobild auslesen und verwenden. Es funktioniert schon und auch mit Threads (nativ). Leider ist die Prozessorauslastung immer 100%.
Um es jetzt etwas schöner zu machen, möchte ich den Threadcode der boost-Bibliothek verwenden. Die Kinect API feuert ein Event, wenn ein Bild fertig ist. Mit API-Befehlen muss man es kopieren und ich rechne noch etwas. Jetzt liegt es im Buffer und wenn der Hauptthread es braucht kopiert er sich es.
Wie genau benutze ich die conditions in boost, also wie bekomme ich es hin ohne den Prozessor in einer Whileschleife voll auszulasten?
Um es jetzt etwas schöner (Blödsinn, willst Du reimen?)
zu machen, möchte ich den Threadcode
der boost-Bibliothek verwenden. Die Kinect API
boost … und kinect… kenn ich leider nicht. Könnte das „connect“ heißen?
feuert ein
Event, wenn ein Bild fertig ist. Mit API-Befehlen muss man es
kopieren und ich rechne noch etwas. Jetzt liegt es im Buffer
und wenn der Hauptthread es braucht kopiert er sich es.
Wenn Du das Event abfangen und die Nachricht an den ursprünglichen Empfänger weitersenden kannst, und dann auch noch das Bild oder den Speicher davon kopieren kannst, ist doch alles in Ordnung.
Wozu dann noch eine weitere Api?
Wie genau benutze ich die conditions in boost, also wie
bekomme ich es hin ohne den Prozessor in einer Whileschleife
voll auszulasten?
Mach es einfach. Dein Programm macht zuerst nichts. Die Nachricht leitest Du um an eine Adresse in Deinem Programm, indem Du sie vorher per Api umleitest. Du sendest dann ggf. die Nachricht an den ursprünglichen Empfänger und kopierst dann Dein Bild.
Multithreading ist ein eigenes Thema, und man kann relativ leicht neue Threads zur Leistungsaufteilung per Windows API eröffnen, wenns denn um Windows geht.
Hinweis: kenne mich bei C++ nicht im Detail aus, würde das in VB5 so machen.
die Antwort von Matthias hast du ja sicherlich ja auch schon gelesen.
Ich bin (leider) kein C++ - Spezi. Ich habe selbst eine Kinect und mich für SimpleOpenNI und die auf Java basierende Programmiersprache Processing entschieden,
Unter Processing wird das Bild (welches Bild? RGB, Infrarot? Tiefenmodus aktiviert?) ausgelesen? Probleme bezüglich der Processorauslastung hatte ich in dieser Entwicklungsumgebung nicht.