2010-06-06 22 views

risposta

9

È possibile utilizzare la libreria Boost GIL. È estremamente potente e versatile e può effettivamente soddisfare tutte le tue esigenze (beh, sì, è boost :).

11

Magick++ potrebbe aiutare. È la versione della libreria di ImageMagick.

2

Molto buona biblioteca è GD2

Questa libreria ha lingue più associazioni, tra cui C (che è compatibile con C++, ovviamente). È facile creare GD come libreria statica o dinamica con qualsiasi compilatore C++, inclusi GCC e Visual C++, anche i binari predefiniti sono disponibili su Internet. A differenza della libreria di immagini Boost, consente di caricare/salvare immagini da/su memoria e non solo su disco fisso.

+1

Credo che boost GIL consenta anche di scrivere/leggere nella/dalla memoria. – jiggunjer

9

Tutte le opzioni di cui sopra dovrebbero essere in grado di fare ciò che è necessario.

Desidero aggiungere OpenCV all'elenco. Si tratta di una veloce libreria di computer vision multipiattaforma con un ampio supporto per il caricamento, il salvataggio e l'elaborazione delle immagini. È scritto in C, ma ha una solida interfaccia C++, che ho usato in passato.

Detto questo: Reading/writing PPMs is straight-forward, quindi se tutto ciò di cui hai bisogno è leggere e soglia, dovresti assolutamente prendere in considerazione la possibilità di farlo tu stesso. Si passerebbe alla lettura dei byte PPM in memoria, al greyscaling calcolando la media dei canali di colore RGB (si noti che la media dei canali RGB è uno, molto semplice, metodo a scala di grigi, ci sono more), quindi la soglia e la scrittura.

6

Simd Library The è una libreria di elaborazione di immagini open source gratuita, progettata per programmatori C e C++. Fornisce molti utili algoritmi ad alte prestazioni per l'elaborazione di immagini quali: conversione del formato pixel, ridimensionamento e filtraggio dell'immagine, estrazione di informazioni statistiche da immagini, rilevamento del movimento, rilevamento di oggetti (classificatori HAAR e LBP) e classificazione, rete neurale.

Gli algoritmi sono ottimizzati con l'utilizzo di diverse estensioni della CPU SIMD. In particolare la libreria supporta le seguenti estensioni della CPU: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 e AVX-512 per x86/x64, VMX (Altivec) e VSX (Power7) per PowerPC, NEON per ARM.

La libreria Simd ha API C e contiene anche classi e funzioni C++ utili per facilitare l'accesso all'API C. La libreria supporta collegamenti dinamici e statici, compilatori Windows e Linux, MSVS, G ++ e Clang a 32 bit e 64 bit, progetti MSVS e sistemi di generazione CMake.

P.S. Partecipo allo sviluppo di questo progetto.

+0

Sembra una bella biblioteca! Sei anche l'autore?Se è così, dovresti probabilmente menzionarlo nella risposta (vedi [disclosure dell'affiliazione] (http://stackoverflow.com/help/behavior)) –

+0

Non conoscevo questa regola. – ErmIg

+0

La libreria di Simd ha qualche funzione che combinerebbe due immagini verticalmente in modo tale che (500x500, 500x500) diventi (500x1000)? Non ho ancora imparato il C++ e sto cercando di trovare una libreria in grado di farlo (da utilizzare in Android). Potete aiutare – rupinderjeet

2

Desidero aggiungere VIPS all'elenco. La libreria è particolarmente adatta per macchine con molte CPU. Per un confronto, vedere i parametri di riferimento here.

3

The CImg Library è una scelta popolare anche. È molto semplice da utilizzare, leggero e ha già implementato un numero elevato di operatori di elaborazione delle immagini di base e avanzati.

Problemi correlati