VisiCam - Teile mit Kamera passgenau platzieren
VisiCam ist ein extra Programm für Visicut. Es erlaubt das Erkennen des aktuellen Laserbettes und Platzieren von Objekten mit Hilfe einer Webcam und 4 Markern - in jeder Ecke einer.
Installation von VisiCam
Ausgedruckte Marker
https://raw.githubusercontent.com/t-oster/VisiCam/refs/heads/master/visicam-marker.svg
Erfordernisse
Achtung. Es sind exakt folgende Versionen zu verwenden, da zu alte oder zu neue Versionen keinen Build erlauben.
- Microsoft Visual C++ 2010 Service Pack 1 Redistributable x64
- Apache Ant 1.9.9
- OpenCV Library 2.4.9
- JavaCV Library 0.8
- Oracle Java JDK 1.7u80 (Login notwendig)
- VisiCam - Commit da73c08
Anleitungen
- https://github.com/t-oster/VisiCam (README.md)
- https://github.com/t-oster/VisiCam/wiki
- https://visicut.org
Hinweis: VisiCam kann auch als [Docker Container](https://github.com/t-oster/VisiCam/blob/master/Dockerfile) installiert werden!
Step by Step
Git cloning
cmd
mkdir "C:\Epilog Laser\"
cd "C:\Epilog Laser\"
git clone https://github.com/t-oster/VisiCam.git
Java Installation
https://download.java.net/java/GA/jdk14.0.2/205943a0976c4ed48cb16f1043c5c647/12/GPL/openjdk-14.0.2_windows-x64_bin.zip herunterladen und in C:\Epilog Laser\VisiCam\
entpacken
ant Installation
ant herunterladen, nach C:\Epilog Laser
entpacken und dann ant
in Umgebungsvariable %PATH%
(User) einfügen: C:\Epilog Laser\apache-ant-1.9.9\bin
Wir benötigen diese alte ant Version, damit Java 1.6 unterstützt wird.
Javacv Bibliothek v0.8 einbinden
Herunterladen von https://repo1.maven.org/maven2/org/bytedeco/javacv/0.8/javacv-0.8-bin.zip und Entpacken in C:\Epilog Laser\VisiCam\lib\javacv-bin
OpenCV Bibliothek 2.4.9 einbinden
Herunterladen und Installieren von https://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.9/opencv-2.4.9.exe/download und dann in Umgebungsvariable %PATH%
(User) einfügen: C:\Epilog Laser\opencv\build\x64\vc10\bin
Projekt kompilieren
Der Build dauert ca. 10-15 Sekunden
cmd
cd "C:\Epilog Laser\VisiCam\"
set "JAVACMD=C:\Program Files\Java\jdk1.7.0_80\bin\java.exe"
ant clean
ant -verbose
##
Starten (manuell)
Folgender Befehl startet VisiCam, aber scheitert im Web GUI mit Fehler: INTERNAL ERROR: serveFile(): given homeDir is not a directory
cmd
cd C:\Epilog Laser\VisiCam\dist
VisiCam.jar
Folgender Befehl funktionierteignet jedoch:sich für Testzwecke:
cmd
cd C:\Epilog Laser\VisiCam\
ant run
Die Oberfläche der Anwendung sieht so aus:
Das Webinterface läuft unter http://192.168.178.90:8080 und sieht wie folgt aus:
- Das aktuelle Kamerabild kann über http://192.168.178.90:8080/image abgerufen werden. U.a. ist der Stream auch erreichbar über
Es ist empfehlenswert dem Client-PC eine feste IP-Adresse zuzuweisen oder eine localhost
Adresse in Visicut zu verwenden, damit der Kamerastream stabil abrufbar bleibt, auch wenn der PC neugestartet wird.
Starten per Verknüpfung
Wir können folgende Zeilen in eine start-visicam.cmd
Datei schreiben und zukünftig per Mausklick starten:
cd C:\Epilog Laser\VisiCam\
"C:\Epilog Laser\apache-ant-1.9.9\bin\ant.bat" run
oder noch besser:
cd C:\Epilog Laser\VisiCam
javaw --enable-native-access=ALL-UNNAMED -jar dist\VisiCam.jar
Wollen wir die Befehlszeile verstecken, eignet sich folgender Aufruf:
cd C:\Epilog Laser\VisiCam
start /min cmd /c "javaw --enable-native-access=ALL-UNNAMED -jar dist\VisiCam.jar"
Starten als Service (bevorzugt)
Diese Variante ist narrensicher und ohne nervige Zwischenfenster anwendbar! Die Anwendng startet im Fehlerfall zudem automatisch erneut.
Hierfür installieren wir NSSM - the Non-Sucking Service Manager und führen aus:
Config
Alle in der Web GUI angepassten Werte landen in der Konfigurationsdatei C:\Epilog Laser\VisiCam\visicam.conf
Marker setzen und Kamera-Kalibrierung
ToDo
Auf diesem Foto zu sehen: Die vier Eck-Marker, ein 610x313mm großes Stück Papier und ein Kalibrierlaserjob mit 8 Stützpunkten. Zur besseren Sichtbarkeit wurden sie nach dem Lasern mit Textmarker gefärbt, weil das Kamerabild zu hell gewesen ist.
Anpassung der Webcam-Einstellungen mit FFmpeg (Bild-Finetuning)
Die von uns verwendete Webcam wird automatisch in ihren Einstellungen überschrieben, was ziemlich stört, da das Bild häufig überzeichnet ist und deshalb gelaserte Konturen nicht mehr erkennbar sind. Mit den Windows-eigenen Einstellungen kommen wir nicht weit. Deshalb installieren wir das Tool ffmpeg
, um die Webcam-Einstellungen mit einem netten GUI zu überschreiben.
FFmpeg herunterladen und in %PATH%
einbinden:
https://ffmpeg.org/download.html#build-windows
USB Kameras auflisten:
ffmpeg -list_devices true -f dshow -i dummy
Zielkamera auswählen und Konfigurationsdialog öffnen:
set cam="@device_pnp_\\?\usb#vid_32e4&pid_9422&mi_00#8&149655b1&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
ffmpeg -f dshow -show_video_device_dialog true -i video=%cam%