Hallo zusammen, ich habe eine alte Logitech "Logicool" Webcam (P/N 861202-0116, PID CE64003). Diese ist für meine Zwecke ideal 1. weil sie ohne Gehäuse sehr kompakt ist 2. weil ich Objekte bis ca. <5 cm vor der Linse scharfstellen kann Diese Kamera wollte ich nun in eigene Programme einbinden. Es gibt von Logitech und anderen umfangreiche Software (z.T. >100 MB) mit allerlei Funktionen, die ich nicht brauche. An Einbinden oder Zugriff auf Einstellungen durch eigene Programme ist da nicht wohl zu denken. Gibt es für diese Kamera DLLs oder universelle DLLs oder kennt jemand eine einfache Software, die man einbinden kann? Es gibt so vieles im Netz, wobei mir das meiste unbrauchbar erscheint, und ich nicht alles ausprobieren kann. Ich möchte lediglich per eigenen Programm ausgelöst Einzelbilder aufnehmen und evtl. Belichtungszeit und Kontrast einstellen und die Bilder lokal abspeichern. Keine Webpage, Livecam, FTP, Facebook oder sonstiger Firlefanz... Oder gibt es evtl. andere Kameras mit einbindbarer Software (und Preisklasse <<50 EUR), die ähnlich kompakt und auf geringe Distanz scharfstellen können? Wer kann da etwas empfehlen?
Versuche es mal mit Processing. Mit ein paar Zeilen Code hast Du dein Ziel erreicht.
1 | import processing.video.*; |
2 | |
3 | Capture cam; |
4 | |
5 | void setup() { |
6 | size(640, 480); |
7 | |
8 | String[] cameras = Capture.list(); |
9 | |
10 | if (cameras.length == 0) { |
11 | println("There are no cameras available for capture."); |
12 | exit(); |
13 | } else { |
14 | println("Available cameras:"); |
15 | for (int i = 0; i < cameras.length; i++) { |
16 | println(cameras[i]); |
17 | }
|
18 | |
19 | // The camera can be initialized directly using an
|
20 | // element from the array returned by list():
|
21 | cam = new Capture(this, cameras[0]); |
22 | cam.start(); |
23 | }
|
24 | }
|
25 | |
26 | void draw() { |
27 | if (cam.available() == true) { |
28 | cam.read(); |
29 | }
|
30 | image(cam, 0, 0); |
31 | // The following does the same, and is faster when just drawing the image
|
32 | // without any additional resizing, transformations, or tint.
|
33 | //set(0, 0, cam);
|
34 | }
|
Quelle: http://processing.org/reference/libraries/video/index.html
Danke für den Tipp. Hab's mal gestartet ohne mich lange einzulesen. Es kommt eine Fehlermeldung: The constructor Capture(sketch_may16a, String) is undefined. Soll das heißen: keine Kamera gefunden? Oder nicht initialisiert? Vielleicht hat er die Logitech nicht erkannt? Es gibt aber noch eine eingebaute Kamera? Auch nicht erkannt?
Bei mir funktioniert es mit jeder Kamera, die ich anstecke. Auch mit der ganz alten Quickcam. Welche Processing Version hast Du installiert? 2.0 Beta 8 solltest Du haben. Schau mal bei den USB Geräten nach ob die Kammera als USB Gerät erkannt wird. Grüsse
Richtig. Ich wollte nur vermeiden, dass die Version 1.5 verwendet wird. Die Video API hat sich zwischen 1.5 und 2.0 geändert. Grüsse
Ok. Mein Fehler. Wollte auf Nummer Sicher gehen und hatte Stable Release V1.5 installiert. Mit 2.0b8 tut's. Sehr schön! Nun muss ich schauen, wie ich das ganze in mein FreePascal/Lazarus-Programm einbinden kann, damit ich gesteuerte Schnappschüsse machen kann. Ich hoffe, das Ganze wird kein Ding der Unmöglichkeit.
Mit direktem einbinden wird es wohl nicht funktionieren. Prozessing basiert auf Java. Du kannst aber eine Processing Anwendung implementieren, die Du aus deiner Anwendung starten und stoppen kannst. Konfigrieren über eine Datei die deine Anwendung schreibt und die Video App liest. Den Auslöser für eine Bildaufnahme lönntest Du über das OS Eventsystem realisieren, indem Du z.B. einen Tastendruck simulierst, der vom OS an die Video App übergeben wird. Die Bilder legst Du dann wieder mit Zeitstempel auf dem Dateisystem ab. Viele Wege führen zu einer Lösung. Grüsse
Man kann auch einfach einen Socket aufmachen da könenn dann Komandos und Daten drüber ;-)
Mit Sockets habe ich es bis jetzt auch immer erledigt. Ohne den Wissenstand von Theo zu kennen bleibt es aber bei Vorschlägen. Theo muss sich jetzt dazu äussern. Grüsse
Sockets würd' ich auch empfehlen, dann könnten Grabber-App und Verarbeitung bei Bedarf sogar auf unterschiedlichen Rechnern/Plattformen laufen.
Hallo zusammen, danke für die Vorschläge. Ich würde mich als Anfänger mit gewissen Grundkenntnissen bezeichnen, der in grauer Vorzeit mal Basic und Pascal programmiert hat und sich mit Perl einigermassen auskennt. Habe keine Ahnung von Sockets etc... Ich möchte nur ein einfaches, kompaktes .exe mit simplem GUI realisieren, was ohne großartige Runtime Engines (z.B. von LabView etc.), Java Zusatzpakete und sonstige Extra-Umwege oder Installationen auskommt und mehr oder weniger auf jedem einfachen (auch älteren) Rechner (vorerst Windows, später evtl. Linux o.a.) funktioniert. Da wurde mir FreePascal/Lazarus empfohlen. In der Zwischenzeit habe ich noch folgendes gefunden: http://sourceforge.net/projects/freepascalvideo/ Damit habe ich ein kleines FreePascal Programm, dass mir die Webcam erkennt und in einem Fenster darstellt. Wie ich diese Daten nun abspeichern kann und Einstellungen vornehmen kann, usw. muss ich jetzt schauen... Theo.
Du hast mit Freepascal deine Programmiersprache gefunden. Ich möchte aber auch noch anmerken, dass mit Processing mit einem Klick Standalone Packete für Windows, Mac OS X und Linux erstellt werden können. Diese kommen ohne Installation aus. Grüsse
Hi, ich würde C++ und OpenCV nutzen. In Verbindung mit QT kannst du auch die Bilder der Webcam anzeigen. OpenCV unterstützt auch das speichern in gängigen Video- und Bildverarbeitungen. LG
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.