2015-02-24 21 views
5

Sto lavorando con un file tiff piramidale. Tuttavia, OpenCV non supporta i file tiff piramidali e quindi sto tentando di utilizzare libtiff 4.0.3 per estrarre il livello/directory/risoluzione di cui ho bisogno e quindi passarlo a OpenCV per l'elaborazione.Librerie openCV e libtiff incompatibili su OSX

I comprendono i seguenti:

#include "tiffio.h" 
#include "opencv2/highgui/highgui.hpp" 

Ma così facendo mi dà il seguente in types_c.h:

typedef int64_t int64; 
Typedef redefinition with different types ('int64_t(aka 'long long') vs 'long') 

Sembra int64_t si definisce in modo diverso da ciascuno dei 2 biblioteche.

ho usato homebrew installare entrambe le librerie e così preferirei non dover modificare quelle librerie dal momento che causerà problemi con ottenere aggiornamenti, essendo un dolore per gli sviluppatori futuri della mia squadra, ecc

C'è un modo in cui posso usare entrambe le librerie senza modificarle?

risposta

6

Poiché entrambe le librerie "poluto" spazio dei nomi globale con definizioni (e vedete, quanto è importante avere spazi dei nomi adeguati nelle librerie di terze parti) non c'è modo di includere entrambi nello spazio dei nomi globale. Hai includere uno di loro avvolti in uno spazio dei nomi definito dall'utente in questo modo:

namespace libtiff { 
    #include "tiffio.h" 
} 
#include "opencv2/highgui/highgui.hpp" 

che risolverà problema di compilazione anche se non sono sicuro se questa soluzione è conveniente per l'uso, come si dovrà utilizzare i membri libtiff utilizzando libtif :: prefisso,

+0

Non sapevo che si potesse includere lo spazio dei nomi in questo modo, questo è esattamente quello che stavo cercando. Il prefisso libtif :: non è meraviglioso, ma è molto meglio delle alternative è un piccolo prezzo da pagare. Grazie! –

+0

Penso che si possa usare 'libtiff namespace;' dopo include e non ci siano conflitti a meno che non si usi il tipo 'int64' in qualsiasi codice successivo. – Thomas

Problemi correlati