Seite 2 von 5

Re: AutoKey 3D v1.1 verfügbar

Verfasst: 6. Nov 2017 12:43
von englishfire
Danke für den Tipp zum Drucker. Muss ich mir gleich mal anschauen!

Re: AutoKey 3D v1.1 verfügbar

Verfasst: 6. Nov 2017 19:15
von distiller
decoder hat geschrieben:Kannst du mir kurz sagen welche Version von OpenSCAD das ist, sowie die Ubuntu Version? Ich vermute OpenSCAD ist zu alt, das lässt sich aber einfach beheben :)
OpenSCAD version 2014.01.29

Danke!

Re: AutoKey 3D v1.1 verfügbar

Verfasst: 7. Nov 2017 12:03
von decoder
distiller hat geschrieben: OpenSCAD version 2014.01.29

Du brauchst mindestens die 2015.03.X version. Schau mal unter http://www.openscad.org/downloads.html

Da findest du auch Anweisungen, wie es mit Ubuntu geht. Ungefähr so:

Code: Alles auswählen

sudo add-apt-repository ppa:openscad/releases
sudo apt-get update
sudo apt-get install openscad
Falls dir add-apt-repository fehlt, kannst du das mit folgendem Befehl beheben

Code: Alles auswählen

sudo apt-get install software-properties-common python-software-properties

Re: AutoKey 3D v1.1 verfügbar

Verfasst: 7. Nov 2017 12:04
von decoder
englishfire hat geschrieben:Bislang benutzt man Gimp und Inkscape um den Profilzug zu extrahieren? Oder gibt es schon bessere Methoden? Deine Software dahingehend zu erweitern wäre top!

Ich habe bereits eine bessere Methode. Wenn du Linux benutzt und mein Betatester sein willst, dann kann ich dir das gerne mal vorab zur Verfügung stellen.

Re: AutoKey 3D v1.1 verfügbar

Verfasst: 7. Nov 2017 13:44
von englishfire
@decoder: Sehr gerne!

Re: AutoKey 3D v1.1 verfügbar

Verfasst: 7. Nov 2017 15:47
von englishfire
Ich bekomme es unter Windows noch nicht hin.

Code: Alles auswählen

C:\Python27>autokey.py --blank --profile C:\python27\profiles\AB-AB1.svg --definition C:\python27\definitions\AB-C83.scad
Traceback (most recent call last):
  File "C:\Python27\AutoKey.py", line 199, in <module>
    sys.exit(main())
  File "C:\Python27\AutoKey.py", line 143, in main
    subprocess.check_call(["inkscape", "-E", os.path.join(BRAND_DIR, "branding.eps"), os.path.join(BRAND_DIR, "branding.svg"),])
  File "C:\Python27\lib\subprocess.py", line 181, in check_call
    retcode = call(*popenargs, **kwargs)
  File "C:\Python27\lib\subprocess.py", line 168, in call
    return Popen(*popenargs, **kwargs).wait()
  File "C:\Python27\lib\subprocess.py", line 390, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 640, in _execute_child
    startupinfo)
WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden

Re: AutoKey 3D v1.1 verfügbar

Verfasst: 8. Nov 2017 22:58
von decoder
englishfire hat geschrieben:Ich bekomme es unter Windows noch nicht hin.
Windows wird auch generell nicht unterstützt. Im Prinzip müsste es dort mit einigen Änderungen gehn, aber alle externen Tools die ich aufrufe, müssten dafür unter Windows verfügbar sein. Bei inkscape wäre das vllt noch möglich, aber ich verwende auch pstoedit für die Konvertierung nach dxf (OpenSCAD kann keine SVGs lesen), und das gibts für Windows (glaube ich), nicht.

Am besten bist du mit einer Ubuntu VM bedient. Falls du es selbst unter Windows gangbar machen willst, müsstest du folgende Änderungen vornehmen:

Alles wo inkscape aufgerufen wird, durch ne Variable ersetzen, die den Pfad zu inkscape.exe enthält. Selbiges für pstoedit (falls es das für Windows gibt). Das neue --isolate Feature (für die semiautomatische Profilextraktion) benötigt außerdem "autotrace" und 2 Pythonmodule, einmal opencv (Version 2) und einmal numpy.

Re: AutoKey 3D v1.1 verfügbar

Verfasst: 9. Nov 2017 18:03
von distiller
Vielen Dank, nun klappt es.
Wahnsinn! Richtig easy und ich werde mal versuchen, ein paar C83 zu kopieren…

Re: AutoKey 3D v1.1 verfügbar

Verfasst: 10. Nov 2017 16:32
von englishfire
Ich habe es jetzt auch am laufen! :) :respekt:

Re: AutoKey 3D v1.1 verfügbar

Verfasst: 11. Nov 2017 18:13
von decoder
Ich nutze die Gelegenheit dann mal, um eine neue (experimentelle) Funktion vorzustellen, nämlich die Profilisolation. Dazu müsst ihr nur
  • folgende Abhängigkeiten installieren: inkscape, autotrace, python-numpy und python-opencv (cv2)
  • ein gutes Bild des Profils (gute Auflösung, möglichst wenig Rauschen sowie möglichst plane Aufnahme, also exakt gerade auf das Profil ohne Drehung in irgendeine Richtung) entsprechend zuschneiden (siehe unten)
  • Autokey mit den Parametern

    Code: Alles auswählen

     --isolate dein_bild.jpg --profile dein_profil.svg
    starten
Ihr bekommt dann mehrere Fenster:
  • Das Fenster mit den Schiebereglern ist euer Ausgabefenster, d.h. dort seht ihr das jeweilige Ergebnis
  • Das Fenster, welches lediglich euer ursprüngliches Bild zeigt und sonst nichts, ist euer Arbeitsbereich.
Am besten ihr ordnet euch die beiden Fenster nebeneinander an. Dann nehmt ihr den Arbeitsbereich her und beginnt, indem ihr mit der rechten Maustaste ein Quadrat ungefähr um das Profil zieht. Das muss nicht genau sein (siehe unten in der Beispielausgabe). Danach drückt ihr die Taste n mehrmals. Jedes Drücken der Taste n führt eine Iteration eines Segmentierungsalgorithmus durch, das sollte man mehrmals machen bis das Ergebnis ungefähr gleich bleibt. Das Ergebnis seht ihr auch sofort in der Ausgabe, im roten Bereich.

Nun ist das Ergebnis an der Stelle selten 100% richtig, es gibt viele Gründe warum man hier nachhelfen muss, u.a. unterschiedliche Ausleuchtung, Reflexionen und Probleme mit dem ersten (sichtbaren) Pin. Um das Ergebnis nun zu verbessern gibt es zwei Möglichkeiten:
  • Ihr drückt die Taste 0 und markiert mit der linken Maustaste einen Bereich, der nicht zum Profil gehört (also Teil des Schlosskörpers ist)
  • Ihr drückt die Taste 1 und markiert mit der linken Maustaste einen Bereich, der zum Profil gehört (das schließt auch eventuelle Schließelemente ein, die sichtbar sind, aber nicht zum Profil selbst gehören)
Natürlich wendet ihr das auf ggf. falsch erkannte Bereiche an. Dabei müsst ihr nicht alles, was falsch erkannt wurde, genau ausmalen, oft reicht ein einzelner Strich an der Stelle. Nach jedem Schritt könnt ihr mit der Taste n (ggf. mehrmals) das Ergebnis so weiter verfeinern.

Wenn ihr grob zufrieden seid, könnt ihr mit der Taste m das Ergebnis vektorisieren und betrachten (in der Ausgabe ganz rechts).

Ihr könnt alle funktionen (0, 1, n und m) jederzeit wiederholen, d.h. auch nach der Vektorisierung kann man noch bereiche markieren, dann mit n neu iterieren und mit m neu vektorisieren.

Zum Abschließen des Vorgangs drückt ihr die Taste s. Das Profil wird dann wie angegeben gespeichert (aktuell erzeugt das Programm zusätzlich ein Debugbild der Ausgabe).

Es ist gut möglich, dass es hier und da hakt, und auch an Dokumentation und Tests fehlt, da das Feature ganz neu ist. Gibt auch noch jede Menge Raum für Verbesserungen. Bin auf Feedback gespannt.

Hier mal noch eine Beispielausgabe (schwarze und weiße Striche sind 0/1 Markierungen von mir):
grabcut_summary.png