Compilando a biblioteca
http://vision.middlebury.edu/stereo/code/
g++ -o StereoMatch BoxFilter.o Convert.o Convolve.o Histogram1D.o Image.o ImageIO.o main.o MinFilter.o ParameterIO.o RefCntMem.o StcAggregate.o StcDiffusion.o StcEvaluate.o StcGraphCut.o StcOptDP.o StcOptimize.o StcOptSO.o StcPreProcess.o StcRawCosts.o StcRefine.o StcSimulAnn.o StereoIO.o StereoMatcher.o StereoParameters.o Warp1D.o maxflow/maxflow.o -lm StcAggregate.o: In function `CStereoMatcher::AggrMin()': StcAggregate.cpp:(.text+0x1b0): undefined reference to `void MinFilter<float>(CImageOf<float>&, CImageOf<float>&, int, int)' StcEvaluate.o: In function `_ZL14PartialShuffle8CImageOfIhERS0_S1_f.constprop.3': StcEvaluate.cpp:(.text+0x21): undefined reference to `void MinFilter<unsigned char>(CImageOf<unsigned char>&, CImageOf<unsigned char>&, int, int)' StcEvaluate.cpp:(.text+0x36): undefined reference to `void MaxFilter<unsigned char>(CImageOf<unsigned char>&, CImageOf<unsigned char>&, int, int)' collect2: ld returned 1 exit status make: ** [StereoMatch] Erro 1
Solução: mv MinFilter.cpp MinFilter.h
O erro ocorre porque a implementação de um template deve estar no *.h. Como os autores haviam dividido em dois arquivos, eu transformei o .cpp no .h. Terá outro erro de compilação sobre múltipla definição de CallMinFilters. Só comentar.
Para o código contido em maxflow/, é necessário o código disponível em: http://www.avglab.com/andrew/soft.html
Mais precisamente: http://www.avglab.com/andrew/soft/prf.tar