Na das sieht doch schon ganz gut aus

Da du DDLs erwähnst, vermute ich, dass du unter Windows programmierst. Wenn ich mich recht erinnere, installiert man OpenCV dort unter C:\Opencv? Schau mal wo dort die fehlenden DDLs liegen (irgendwo im build Ordner, denke ich mal). Der Grund, warum es auf dem anderen Rechner nicht läuft, ist, dass du OpenCV nur auf deinem Rechner systemweit installiert hast und somit Zugriff auf die Bibliotheken besteht. Wenn du die .exe startest, wird (ich hoffe, die Reihenfolge stimmt) zuerst im gleichen Verzeichnis, in dem das Programm liegt, nach den DLLs gesucht, dann in System32 und anderen angegebenen Pfaden. Also reicht es, wenn du die fehlenden DLLs in den Ordner kopierst, wo deine .exe liegt. Dabei ist zu beachten, dass manche ein 'd' im Namen, glaube nach der Versionsnummer stehen haben. Je nachdem ob du als Release oder Debug kompiliert hast, musst du die DLLs mit dem 'd' (Debug) oder ohne (Release) in den Ordner kopieren.
Ich habe deinen Code mal als Grundlage genommen und zwei, drei Änderungen eingebaut:
Statt aller x Frames ein Bild zu speichern, kannst du auch die waitKey() Funktion nutzen um direkt X Sekunden zu warten. Nachteil ist, dass sich das Bild auch nur alle X Sekunden erneuert. Falls du eine Live Anzeige willst, ist deine Methode natürlich besser. Dabei solltest du aber beachten, dass nicht alle Kameras mit 25 Frames pro Sekunde aufnehmen und daher die Zeitabstände zwischen den Bildern unterschiedlich sein können.
Bei der Benennung hast immer BildX.jpg. Das kann beim Sortieren nerven, weil dann teilweise so sortiert wird: Bild1.jpg, Bild10.jpg Bild2.jpg, Bild20.jpg, ...
Das Problem lässt sich einfach mit vorgestellten Nullen lösen. Das können dir ganzen Xprintf() Funktionen automatisch. Einfach "%05d" nutzen. Dann hat die Ausgabe immer 5 Ziffern wobei fehlende Werte mit Nullen aufgefüllt werden. Das geht auch mit float Werten, die man automatisch in der Bildschirmausgabe runden kann. Mehr Infos mit Beispielen z.B. unter:
http://www.codingunit.com/printf-format ... ted-outputDann hab ich noch die Auswahl der Webcam Nr hinzugefügt, weil man ja z.B. am Laptop die interne Kamera dran hat aber vielleicht doch lieber eine externe per USB nutzen will. Aber das hättest du bestimmt auch selbst fix hin bekommen

- Code: Alles auswählen
#include <stdio.h>
#include <iostream>
#include <opencv2/opencv.hpp>
#include <sstream>
using namespace cv;
using namespace std;
int main()
{
int x,webcam_nr,bildnummer=0;
string name,anhang,bildname;
char buffer[50];
name="Bild";
anhang=".jpg";
cout<<"Alle wie viel Sekunden ein Bild speichern?"<<endl;
cout<<"hier eingeben"<<endl;
cin>>x;
cout<<"Welche Webcam Nr?"<<endl;
cout<<"hier eingeben"<<endl;
cin>>webcam_nr;
namedWindow("Bilder",CV_WINDOW_NORMAL);
VideoCapture webcam(webcam_nr);
if (!webcam.isOpened())
{
cout << "geht net!"<<endl;
return(-1);
}
//Endlosschleife (Frames einlesen/speichern und ausgeben
while(1){
Mat frame;
webcam.read(frame); // read a new frame from video
imshow("Bilder",frame);
//wandelt int um (format fuenfstellig mit fuehrenden nullen)
sprintf (buffer,"%05d",bildnummer);
//erstelt den Datei/speichernamen
bildname = name+buffer+anhang;
//rest=zahlrech%x;
imwrite(bildname, frame);
bildnummer++; //zaehlt direkt hoch :) =bildnummer+1;
// der direkte Vergleich in der if Abfrage ging bei mir irgendwie nicht
char k = waitKey(x*1000); //warte einfach die Zeit in Sekunden
if (k == 27) //wait for 'esc' key press for 30ms. If 'esc' key is pressed, break loop
{
cout << "esc keys is pressed by user" << endl;
break;
}
}
return 0;
}
Bei Kompilierungsfehlern bzw. Fehlern allgemein immer die Fehlerausgabe mit angeben, sonst kann man nur raten
