Webcam Foto aufnehmen

Guten Abend,

ich möchte für ein Projekt in regelmäßigen Abständen mit einer Webcam ein Foto aufnehmen. Die Programmiersprache ist mir egal. Am besten mit Source-Code.

Danke im Voraus
MfG
Ninron

ich möchte für ein Projekt in regelmäßigen Abständen mit einer
Webcam ein Foto aufnehmen. Die Programmiersprache ist mir
egal. Am besten mit Source-Code.

Hallo Ninron,

irgendwie stellst du dir das zu einfach vor.
Was nützt dir der Source-Code wenn du ihn nicht ausführen, kompilieren kannst?
Also mußt du die Entwicklungsumgebung des Programms kaufen für die er geschrieben wurde.

Fertiger Code, der genau das macht was du speziell willst ist ggfs. aufwendig.
Das sprengt hier den Rahmen von w-w-w.

Und, selbst wenn du perfekten Sourcecode hier bekämest, für eine Programmiersprache, du die dir dann kaufst, ob du das dann zum „laufen“ bringst, bezweifel ich.

Bitteschön, nachstehend ist ein schöner Code für Vb, klappt auch in Vba, der macht zwar etwas anderes, der startet ein Fremdprogramm und wartet solange bis dieses fertig ist.

Angenommen, du hast dir jetzt bei ebay für 400 Euros VB6.0 gekauft, kannst du mit dem , vom API-Kram abgesehen, recht kleinen Code überhaupt irgendwas anfangen/ändern usw.?

Gruß
Reinhard

Option Explicit

Private Type STARTUPINFO
 cb As Long
 lpReserved As String
 lpDesktop As String
 lpTitle As String
 dwX As Long
 dwY As Long
 dwXSize As Long
 dwYSize As Long
 dwXCountChars As Long
 dwYCountChars As Long
 dwFillAttribute As Long
 dwFlags As Long
 wShowWindow As Integer
 cbReserved2 As Integer
 lpReserved2 As Long
 hStdInput As Long
 hStdOutput As Long
 hStdError As Long
End Type

Private Type PROCESS\_INFORMATION
 hProcess As Long
 hThread As Long
 dwProcessID As Long
 dwThreadID As Long
End Type

Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Const INFINITE = -1&

Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS\_INFORMATION) As Long
Private Const NORMAL\_PRIORITY\_CLASS = &H20&

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Sub ShellAndWait(ByVal Filename As String)
 Dim RetVal As Long
 Dim proc As PROCESS\_INFORMATION
 Dim StartInf As STARTUPINFO
 StartInf.cb = Len(StartInf)
 RetVal = CreateProcessA(0&, Filename, 0&, 0&, 1&, NORMAL\_PRIORITY\_CLASS, 0&, 0&, StartInf, proc)
 RetVal = WaitForSingleObject(proc.hProcess, INFINITE)
 RetVal = CloseHandle(proc.hProcess)
End Sub

Sub Test()
MsgBox "Bitte editieren Sie die Datei."
ShellAndWait "C:\Windows\Notepad.exe C:\Autoexec.bat"
MsgBox "Die Änderungen der Datei wurden erfolgreich übernommen."
End Sub

Hallo,

vielen Dank schonmal. Ja, kann sein, dass ich mir das zu einfach vorstelle, aber da ich sehr viel Erfahrung mit Java habe und es mir allgemein nicht allzu schwer fällt mich in neue Sprachen einzuarbeiten, denke ich, dass ich das hinbekomme. Ich habe nur leider bei meiner Recherche über Google nichts gefunden, und da ich auch weiß, dass man das bei Java mit anderen APIs machen muss, suche ich eben nach einer anderen Sprache.

MfG
Ninron

Hallo.
Ich würde dafür Processing verwenden, da hast du kurzen und verständlichen Code.
Zu deinem Problem ein Beispiel: http://processing.org/learning/library/gettingstarte…
Liebe Grüße. Alex

Vielen Dank für diese Idee, nur leider brauch man dafür extra Treiber und ich will nicht für mein Projekt auf jedem PC erstmal die Treiber installieren…

Ebenso wäre es genial, falls jemand ein Programm kennt, oder mir erstellen könnte, das alle 5sek ein Bild von der Webcam aufnimmt und in ein bestimmten Ordner speichert. Dabei soll das Programm allerdings keine Fenster oder ähnliches haben/öffnen.

Wäre perfekt, wenn jemand soetwas kennt!

MfG
Ninron

Hallo.
Hatte jetzt mal Zeit dir ein kleines Programm zu erstellen.
Ist in C geschrieben und verwendet OpenCV http://opencv.willowgarage.com/wiki/. Ich hab dir die exe mit den notwendigen opencv dlls und dem Quellcode gezipped und auf http://rapidshare.com/files/435232343/webcam_capture… hochgeladen. Zur Verwendung siehe readme.txt!
Den sourcecode schreibe ich hier hinein falls jemand daran interessiert ist.

#include 
#include 
#include 
#include //Sleep()

void saveImage(char \*path, char \*name, int nr, IplImage \*image) {
 char filename[256];
 sprintf(filename,"%s\\%s%d.JPG", path, name, nr);
 printf("File saved as: %s\n",filename);
 cvSaveImage(filename, image);
}

int mainLoop(char \*path, char \*filename){ 
 int imageNr = 0;
 IplImage \*image;
 CvCapture\* capture = NULL;

 // capture from camera 0
 capture = cvCaptureFromCAM(0);
 if( !capture )
 {
 fprintf(stderr,"Could not initialize capturing...\n");
 return -1;
 }

 image = cvQueryFrame(capture);
 if( !image ){
 fprintf(stderr,"Could not retrieve first frame...\n");
 return -1;
 }

 while(true){
 // get one frame from the camera
 image = cvQueryFrame(capture);
 saveImage(path, filename, imageNr, image);
 imageNr++;
 Sleep(5000);
 }

 // clean-up
 cvReleaseCapture(&capture);
 cvDestroyAllWindows();

 return 0;
}

int main(int argc, char\*\* argv){
 if(argc!=3) {
 printf("Usage: %s path filename\n", argv[0]);
 return 1;
 }
 return mainLoop(argv[1],argv[2]);
}

Liebe Grüße.
Alex

1 Like

Guten Tag,

Hallo.
Hatte jetzt mal Zeit dir ein kleines Programm zu erstellen.

Vielen, vielen Dank!!