PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gute C/C++ Bibliothek für Video-/Bildbearbeitung unter Mac OS X


Senior Sanchez
2010-05-31, 20:34:44
Hi,

Ich suche eine C/C++ Bibliothek für Video-/Bildbearbeitung unter Mac OS X.
Ich brauche da nichts tolles. Hauptsache ich kann Bilder und Videos verschiedener Formate einlesen, auf Pixel und Frames zugreifen und ein paar grundsätzliche Funktionen nutzen.

Wichtig ist weiterhin, dass die Bibliothek umsonst ist, effizient und wenn sie für andere Plattformen verfügbar ist, wäre das auch sehr gut.

OpenCV ist ja grundsätzlich nicht schlecht, mal so als Beispiel. Aber das ist irgendwie ziemlich verbuggt und als ich mit Python damit zu tun hatte, hats mich manchmal wahnsinnig gemacht.

Habt ihr da irgendwelche Ideen, welche Bibliotheken interessant wären?

Coda
2010-05-31, 20:41:04
Für Video wäre das wohl libavcodec, für Bilder gibt's z.B. Cairo. Beides zusammen wäre mir nichts bekannt.

Ganon
2010-05-31, 21:19:25
Also da müsstest du schon im OpenSource-Bereich gucken. So ziemlich alle nichtgrafischen Linux-Bibliotheken laufen meist ohne weiteres unter OS X.

OS X selbst liefert für Bilder aber z.B. CoreImage mit, womit man eigentlich so ziemlich alles machen kann, sogar GPU-beschleunigt. Ist afaik eine C-API.

Für Videos gibt es dann QTKit, aber die spricht man afaik mit Objective-C an. Es gibt dann noch die QuickTime-API, aber davon würde ich die Finger lassen ^^ Dann lieber libavcodec. Hier aber ggf. lizenzen/rechtemäßig aufpassen. Je nachdem was du machen willst.

Senior Sanchez
2010-05-31, 21:44:26
Hmm, dass das so schwierig ist, wusste ich gar nicht. Ich dachte, ich sei einfach nur zu doof zum googlen.

Also das sowohl Bild- als auch Videobearbeitung aus einer Hand kommen, ist mir sehr wichtig, da ich bestimmte Funktionen sowohl für einfache Bilder als auch für Videoframes brauche. (Frames aus einem Video zu extrahieren, als Bilder abzuspeichern und dann mit der Bildbibliothek herangehen ist natürlich auch nicht das Wahre)

@ganon mit Objective-C wollte ich nix machen, aber das haste ja auch angemerkt.

Lohnt es sich vielleicht openCV noch eine Chance zu geben?

Der Begriff Video-/Bildbearbeitung ist vllt auch etwas hochgestochen. Was ich bräuchte ist:
- Bilder und Videos unterschiedlicher Formate müssen geladen werden
- diese vielleicht auch noch leicht anzeigen können
- Konvertierung nach Grayscale von Farbbildern/-videos
- effizienter Zugriff auf einzelne Pixelwerte
- evt. Videos auf Festplatte schreiben, aber so wichtig wäre das nicht

Andere Funktionen wie irgendwelche Filter wären natürlich noch nette Schmankerl.

Hypothraxer
2010-05-31, 22:09:20
Ich nutze OpenCV relativ intensiv und mir wären jetzt nicht wirklich viele Bugs aufgefallen (wenn man mal das leidige Matrizen-Depth Problem aussen vor lässt und den einen oder anderen, unerklärlichen SIGSEGV).

Konvertierungen nach Grayscale sind ja kein Thema mit cvCvtColor()

Einzelne Pixelwerte können auch relativ einfach ausgelesen werden (z.B. mit cvGet2D() )

Die Darstellung von Bildern und Videos geht via Highgui - allerdings würde ich da nicht allzuviel erwarten.
Verschiedene Bildformate können eingelesen werden - gemäss openCV Wiki wären das: BMP, DIB, JPEG, JPG, JPE, PNG, PBM, PGM, PPM, SR, RAS, TIFF, TIF.
Wie es bei Videos aussieht, weiss ich nicht, weil ich Videos bisher nie verwendet habe.

Senior Sanchez
2010-05-31, 23:20:57
Ich nutze OpenCV relativ intensiv und mir wären jetzt nicht wirklich viele Bugs aufgefallen (wenn man mal das leidige Matrizen-Depth Problem aussen vor lässt und den einen oder anderen, unerklärlichen SIGSEGV).

Konvertierungen nach Grayscale sind ja kein Thema mit cvCvtColor()

Einzelne Pixelwerte können auch relativ einfach ausgelesen werden (z.B. mit cvGet2D() )

Die Darstellung von Bildern und Videos geht via Highgui - allerdings würde ich da nicht allzuviel erwarten.
Verschiedene Bildformate können eingelesen werden - gemäss openCV Wiki wären das: BMP, DIB, JPEG, JPG, JPE, PNG, PBM, PGM, PPM, SR, RAS, TIFF, TIF.
Wie es bei Videos aussieht, weiss ich nicht, weil ich Videos bisher nie verwendet habe.

Ich kenne openCV, aber danke für die Erläuterung. ;) Ich habe es im Zusammenhang mit Python genutzt und das war stellenweise eine Katastrophe. Da gabs bei bestimmten Videos immer Crashes, VideoWriter funktionierte nicht, Konvertierungsfunktionen arbeiteten nicht korrekt usw.

Aber anscheinend sieht es für C/C++ anders aus, was schon mal sehr löblich ist und wie ich vorhin gesehen habe, scheint es sich auch leicht für Mac OS X kompilieren zu lassen. (Obwohl man da wohl stellenweise Snow Leopard braucht, damit alles funktioniert)

Ich habe gerade auch noch was scheinbar ganz Nettes gefunden, eine deutsche Entwicklung: http://ivt.sourceforge.net/

Gast
2010-06-01, 11:28:48
Ich verwende OpenCV unter Linux (C++) und habe keine Probleme Videos zu laden.

Falls dir die OpenCV Funtionen zum Zugriff auf Pixel/Konvertierung usw. nicht gefallen wäre vielleicht noch eine Kombination aus OpenCV (videoframes/bilder laden) und boost::gil (bilder bearbeiten) denkbar. Die GIL sieht zwar im ersten Moment etwas kompliziert aus, funktioniert aber sehr gut. :)

Senior Sanchez
2010-06-01, 11:33:36
Ich verwende OpenCV unter Linux (C++) und habe keine Probleme Videos zu laden.

Falls dir die OpenCV Funtionen zum Zugriff auf Pixel/Konvertierung usw. nicht gefallen wäre vielleicht noch eine Kombination aus OpenCV (videoframes/bilder laden) und boost::gil (bilder bearbeiten) denkbar. Die GIL sieht zwar im ersten Moment etwas kompliziert aus, funktioniert aber sehr gut. :)

Hmm, vllt lag es wirklich nur an den python-bindings. :uponder:
Ich hatte das Problem auch nicht durchgängig, aber manche Videos konnte er laden, andere (vom selben Codec, auf dieselbe Weise erzeugt, gleiche Auflösung, Framerate etc. pp.) gingen dagegen nicht.

Aber ihr habt mich umgestimmt. Ich werde openCV einen Versuch geben und GIL von boost ist auch noch eine Überlegung wert.

Danke :)

Weitere Anmerkungen sind natürlich weiterhin willkommen.

Hypothraxer
2010-06-01, 22:24:36
Hmm, vllt lag es wirklich nur an den python-bindings. :uponder:
Ich hatte das Problem auch nicht durchgängig, aber manche Videos konnte er laden, andere (vom selben Codec, auf dieselbe Weise erzeugt, gleiche Auflösung, Framerate etc. pp.) gingen dagegen nicht.

Aber ihr habt mich umgestimmt. Ich werde openCV einen Versuch geben und GIL von boost ist auch noch eine Überlegung wert.

Danke :)

Weitere Anmerkungen sind natürlich weiterhin willkommen.

Evt. wäre ImageMagick noch etwas für dich. Es ist allerdings mehr für Bildbearbeitung gedacht (und nur für Bilder):

http://www.imagemagick.org

Senior Sanchez
2010-06-01, 22:50:30
Evt. wäre ImageMagick noch etwas für dich. Es ist allerdings mehr für Bildbearbeitung gedacht (und nur für Bilder):

http://www.imagemagick.org

Das wirkt mehr wie ein richtiges Programm für die Bildbearbeitung, wobei es wohl auch direkt als API dienen kann.

Ich denke, dass das nicht so ganz das ist, was ich suche. Trotzdem vielen Dank für den Tipp. :)