2011-05-21 7 views
5

He estado siguiendo este tutorial (http://note.sonots.com/SciSoftware/haartraining.html) para hacer algo de entrenamiento de Haar. Actualmente estoy atascado en la creación de ejemplos de entrenamiento, específicamente la combinación de los archivos .vec. Se me proporciona este archivo (http://note.sonots.com/SciSoftware/haartraining/mergevec.cpp.html) y una descripción de cómo compilarlo para Linux (Ubuntu 11.04). Aquí yace mi problema, no puedo construir el código de mergevec. El único error es "error fatal: cvhaartraining.h: no existe dicho archivo o directorio". Lo he comprobado para asegurarme de que cvhaartraining.h está en el mismo directorio que mergevec, pero he encontrado que todo está correcto donde lo esperaría. En este punto, no sé cómo resolverlo, por lo que cualquier ayuda sería muy apreciada.No se puede compilar mergevec.cpp del tutorial de Haartraining

+1

Pruebe agregar '-I' a sus indicadores de compilación. –

+0

Eres un salvavidas –

+1

Mismo problema aquí, ¿dónde exactamente debería agregar '-I'? comando de compilación original: 'g ++ \' pkg-config --cflags opencv \ '\' pkg-config --libs opencv \ '-o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp cvhaartraining.cpp ' –

Respuesta

4

Para construir mergevec encontré que la manera más fácil era editar los archivos de configuración de CMake. En OpenCV 2.3.1, el directorio haartraining está en modules/haartraining mientras que en 2.4.5 está en apps/haartraining. De cualquier manera, el archivo que está interesado en editar se llama CMakeLists.txt.

La cosa más fácil que hacer es añadir una sección especial para mergevec, de la siguiente manera:

# ----------------------------------------------------------- 
# mergevec 
# ----------------------------------------------------------- 
add_executable(opencv_mergevec mergevec.cpp) 
set_target_properties(opencv_mergevec PROPERTIES 
         DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" 
         OUTPUT_NAME "opencv_mergevec") 

puede agregar a este justo antes de la sección de instalación. A continuación, coloque mergevec.cpp en el directorio haartraining, genere OpenCV normalmente y obtendrá un archivo binario opencv_mergevec que es el ejecutable mergevec.cpp.

+0

Esto funciona en Windows también – fiat

1

Para otros que luchan con esto en Ubuntu, mover las banderas hasta el final de la invocación, como esto:

g++ -I. -o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp cvhaartraining.cpp `pkg-config --libs --cflags opencv` 
1

Para solucionar el problema, escriba lo siguiente:

g++ `pkg-config --libs --cflags opencv` -I. -o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp haartraining.cpp -lopencv_core -lopencv_calib3d -lopencv_imgproc -lopencv_highgui -lopencv_objdetect 

buena suerte Ibrahim

Cuestiones relacionadas