While Schleife mit Unterbrechnung
-
Hallo...
Ich arbeite unter Linux (Raspberian) und möchte mir in der While Schleife immer das aktuelle Kamerabild anzeigen lassen. Dies soll so lange angezeigt werden, bis ich eine Taste (zum Beispiel Enter) drücke.
#include<cv.h> #include<highgui.h> #include<iostream> #include <termios.h> // für Funktionen kbhit und getch using namespace cv; // Funktionen int getch(); int getch() { static int ch = -1, fd = 0; struct termios neu, alt; fd = fileno(stdin); tcgetattr(fd, &alt); neu = alt; neu.c_lflag &= ~(ICANON|ECHO); tcsetattr(fd, TCSANOW, &neu); ch = getchar(); tcsetattr(fd, TCSANOW, &alt); return ch; } int main(){ // Variable für Bild Mat image; // Kamera Init VideoCapture cap; cap.open(0); // Anzeigefenster erstellen namedWindow("window", 1); while (getch() != '\n') { // Stream als Bild ablegen cap >> image; // Bild anzeigen imshow("window", image); // Pause in ms waitKey(33); getch(); // Eingabe } return 0; }
Wie man in dem Code sieht habe ich bereits die fehlende Funktion getch unter Linux erweitert. Leider wartet diese aber immer bis eine Eingabe gemacht wurde. Ist es möglich das warten auf die Eingabe zu umgehen, sodass wenn keine Eingabe vorliegt, die Schleife einfach weiter geht?
-
Hallo,
hast du den Kommentar bei dem '#include <termios.h>' hingeschrieben oder nur kopiert - hint hint...?
-
Mit z.B. man: select kann man unter anderem prüfen, ob ein fd lesbar ist.
-
Knigge schrieb:
while (getch() != '\n') { ... getch(); // Eingabe }
Sieht für mich erstmal seltsam aus, aber ich nun auch nicht der Hellste und es ist dazu auch noch 5 Uhr morgens.