Скомпилировать пример OpenCV convert_cascade.cpp (OpenCV 2.3) - PullRequest
0 голосов
/ 22 февраля 2012

Я использую OpenCV 2.3.1 в Ubuntu 11.10. Я могу скомпилировать различные программы, которые я написал сам, без проблем.

Теперь, однако, у меня есть полу-готовый каскад Хаара, который мне нужно собрать в файл xml-каскад. Для этого мне нужно использовать прилагаемый пример программы convert_cascade.c. По умолчанию он не компилируется, поэтому мне нужно это сделать.

Сбой при запуске gcc:

gcc -lopencv_core -lopencv_highgui -lopencv_objdetect -I/usr/local/include/opencv/ -L/usr/local/lib/ convert_cascade.c -o convert_cascade

Это дает мне следующие ошибки:

/tmp/cc5UddX6.o: In function `cvRound':
convert_cascade.c:(.text+0x19): undefined reference to `lrint'
/tmp/cc5UddX6.o: In function `cvDecRefData':
convert_cascade.c:(.text+0xb3b): undefined reference to `cvFree_'
convert_cascade.c:(.text+0xbac): undefined reference to `cvFree_'
/tmp/cc5UddX6.o: In function `cvGetRow':
convert_cascade.c:(.text+0xca2): undefined reference to `cvGetRows'
/tmp/cc5UddX6.o: In function `cvGetCol':
convert_cascade.c:(.text+0xccd): undefined reference to `cvGetCols'
/tmp/cc5UddX6.o: In function `cvReleaseMatND':
convert_cascade.c:(.text+0xce0): undefined reference to `cvReleaseMat'
/tmp/cc5UddX6.o: In function `cvSubS':
convert_cascade.c:(.text+0xe00): undefined reference to `cvAddS'
/tmp/cc5UddX6.o: In function `cvCloneSeq':
convert_cascade.c:(.text+0xe4e): undefined reference to `cvSeqSlice'
/tmp/cc5UddX6.o: In function `cvSetNew':
convert_cascade.c:(.text+0xead): undefined reference to `cvSetAdd'
/tmp/cc5UddX6.o: In function `cvGetSetElem':
convert_cascade.c:(.text+0xf40): undefined reference to `cvGetSeqElem'
/tmp/cc5UddX6.o: In function `cvEllipseBox':
convert_cascade.c:(.text+0x1040): undefined reference to `cvEllipse'
/tmp/cc5UddX6.o: In function `cvFont':
convert_cascade.c:(.text+0x1090): undefined reference to `cvInitFont'
/tmp/cc5UddX6.o: In function `cvReadIntByName':
convert_cascade.c:(.text+0x111e): undefined reference to `cvGetFileNodeByName'
/tmp/cc5UddX6.o: In function `cvReadRealByName':
convert_cascade.c:(.text+0x11af): undefined reference to `cvGetFileNodeByName'
/tmp/cc5UddX6.o: In function `cvReadStringByName':
convert_cascade.c:(.text+0x1209): undefined reference to `cvGetFileNodeByName'
/tmp/cc5UddX6.o: In function `cvReadByName':
convert_cascade.c:(.text+0x1239): undefined reference to `cvGetFileNodeByName'
convert_cascade.c:(.text+0x124f): undefined reference to `cvRead'
/tmp/cc5UddX6.o: In function `main':
convert_cascade.c:(.text+0x13b6): undefined reference to `cvLoadHaarClassifierCascade'
convert_cascade.c:(.text+0x1495): undefined reference to `cvSave'
collect2: ld returned 1 exit status

Кажется, что все отсутствующие функции - это старые функции OpenCV в стиле C, созданные в core_c.h. Но включение этого (#include ) не имеет значения. Я также попытался скомпилировать с флагом -lopencv_legacy (в основном просто предположение, что он может иметь отношение к старым функциям), но безрезультатно.

Что мне делать, чтобы его скомпилировать?

Ответы [ 2 ]

1 голос
/ 09 марта 2012

В каталоге / samples / c / должен быть скрипт build_all.sh, который соберет все примеры для вас;никаких настроек CMAKE не требуется.

0 голосов
/ 23 февраля 2012

Nevermind.Оказалось, что мне все равно пришлось перекомпилировать OpenCV, чтобы включить TBB, поэтому я просто дал CMAKE команду BUILD_EXAMPLES = ON, и теперь у меня она есть в скомпилированной версии.Я уверен, что это не правильное решение; -)

...