2012-02-21 8 views
0

私はUbuntu 11.10でOpenCV 2.3.1を実行しています。私は自分自身で書いた様々なプログラムをコンパイルすることができます。OpenCVサンプルをコンパイルするconvert_cascade.cpp(OpenCV 2.3)

しかし、私はxml-cascadeファイルにアセンブルする必要がある半完成のHaarカスケードを持っています。このためには、付属のサンプルプログラム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 

欠落しているすべての機能がcore_c.hでプロトタイプ古いCスタイルのOpenCVの関数をareareようです。しかしそれを含めて(#<opencv2/core/core_c.h>を含む)、違いはありません。私も-lopencv_legacyフラグ(基本的には古い関数と何か関係があるかもしれないと思います)をコンパイルしようとしましたが、役に立たなかったのです。

コンパイルするにはどうすればよいですか?

答えて

0

Nevermind。結局のところTBBを有効にするためにOpenCVを再コンパイルしなければならなかったので、CMAKEにBUILD_EXAMPLES = ONコマンドを渡してコンパイルされたバージョンにしました。私はそれが適切な解決策ではないと確信しています;-)

1

すべてのサンプルをビルドするbuild_all.shスクリプトが/ samples/c /ディレクトリに存在する必要があります。 CMAKEの調整は不要です。

+0

これは私のためにMacで働いた。しかし、bashスクリプトは一般的に見えます。 – Goran

関連する問題