Seite 1 von 1

Wie Kamerasteuerung kapseln?

Verfasst: Samstag 13. Juli 2013, 16:19
von pythonnovice
Hallo,

ich muss ein Projekt realisieren, welches erweiterbar sein soll (welches nicht? :) )
Dabei handelt es sich um ein Web-Interface, mit dem eine Kamera (USB) gesteuert werden soll jedoch muss diese Kamera austauschbar sein.
Eine andere Kamera muss dann vermutlich anders angesprochen werden. (gphoto2, VideoCapture, OpenCV, oder was es da so alles gibt)

Da ich noch nicht so viel mit Python umgesetzt habe, bin ich mir nicht sicher, wie ich das am besten machen soll.
Ich dachte an eine abstract base class Camera und den Implementierungen für die unterschiedlichen Kameras, bzw Tools die verwendet werden um mit den Kameras zu kommunizieren. (z.B. GphotoCamera)
Wenn also eine neue Kamera dazukommt, muss eine neue Subklasse geschrieben werden.

Ist das so in etwa machbar?

lg

Re: Wie Kamerasteuerung kapseln?

Verfasst: Samstag 13. Juli 2013, 16:27
von darktrym
Ist es OpenCV nicht egal was das für eine Kamera ist? Da ist doch schon eine Abstraktion.

Re: Wie Kamerasteuerung kapseln?

Verfasst: Samstag 13. Juli 2013, 16:43
von BlackJack
@pythonnovice: Du musst Dir halt eine Schnittstelle für so ein Kamera-Objekt überlegen. Und dann implementierst Du Klassen mit dieser Schnittstelle. Das müssen keine Subklassen von irgendwas sein. „Abstrakte Basisklassen” braucht man nur, wenn man da auch tatsächlich irgendwelche konkreten Methoden oder mindestens Daten drin hat, die sich die Subklassen teilen.

Re: Wie Kamerasteuerung kapseln?

Verfasst: Samstag 13. Juli 2013, 16:56
von pythonnovice
darktrym hat geschrieben:Ist es OpenCV nicht egal was das für eine Kamera ist? Da ist doch schon eine Abstraktion.
Das wäre natürlich toll, wenn ich mit OpenCV alle Kameras ansprechen kann.

Wie gesagt, was Python betrifft, bin ich noch am lernen und ich habe mir OpenCV noch nicht so genau angesehen, da ich im Moment nur eine DSLR besitze und mMn gphoto2 dafür besser geeignet ist, da ich nur eine live-preview brauche und einzelne Bilder machen muss und keine computer vision Sachen gemacht werden müssen.
Ich weiß aber, dass es mit einer Industriekamera (uEye) funktionieren soll.

Re: Wie Kamerasteuerung kapseln?

Verfasst: Samstag 13. Juli 2013, 17:30
von pythonnovice
BlackJack hat geschrieben:@pythonnovice: Du musst Dir halt eine Schnittstelle für so ein Kamera-Objekt überlegen. Und dann implementierst Du Klassen mit dieser Schnittstelle. Das müssen keine Subklassen von irgendwas sein. „Abstrakte Basisklassen” braucht man nur, wenn man da auch tatsächlich irgendwelche konkreten Methoden oder mindestens Daten drin hat, die sich die Subklassen teilen.
Ich wollte ja gegen eine Schnittstelle programmieren, darum wollte ich die abc machen.
Habe aber bereits herausgefunden, dass das in python nicht üblich ist. (duck typing)

Wie wird also so eine Schnittstelle in einem Projekt definiert? Wird das einfach in die Doku geschrieben?