1

Ubuntu 12.04 (Precise Pangolin)でBeagleBone Blackを使用しています。次のコマンドを使用して、apt からOpenCVライブラリをダウンロードしました。

sudo apt-get install -y libopencv-dev

このコマンドにより、必要なヘッダーとライブラリがインストールされました。次に、次のコマンドでウィンドウを表示するだけの独自のプログラムをコンパイルしました。

gcc -I/usr/inlcude/ -I/usr/include/opencv2/ -L/usr/lib/ -lopencv_core -lopencv_highgui -lm opencv_test.c -o test

数秒後、「lrint」などの参照が見つからないことが示され、最後に cvNameWindow、cvShowImage などのリンク エラーが表示されます。

これは、インストールされているライブラリの問題である可能性があると思います。-DUSE_NEON=ON最新の OpenCV ソースをダウンロードし、OpenCV wiki で提供されているコードをUbuntu マシンのフラグ付きでクロスコンパイルしました。これらのヘッダーとライブラリを、ext4フォーマットの追加パーティションにコピーしました。再度、次のコマンドを発行しました。

gcc -I/usr/inlcude/ -I/media/misc/opencv/include/opencv/ -I/media/misc/opencv/include/ -L/usr/lib/ -L/media/misc/opencv/lib/ -lopencv_core -lopencv_highgui -lm opencv_test.c -o test

注: /media/misc/ は追加のパーティションです。

このコマンドにより、前と同じ出力が得られます。今、私は要点に来ました。正しいコマンドを発行していない可能性があります。

また、gcc を g++ に変更したところ、次のようなエラーが表示されました。

unable to find reference cvNamedWindow
unable to find reference cvShowImage

4

2 に答える 2

0

リンクコマンドには次のものがあります。-lopencv_core -lopencv_highgui -lm opencv_test.c

これは引数の順序が間違っています。理由を理解するには、これを読んでください。

このコマンドを既存の ubuntu x82 マシンに与えると、非常にうまくコンパイルされます...

「とてもうまくリンクしている」という意味です。

リンクコマンドが正しいからではなく、偶然に起こっています。

于 2013-08-31T06:02:05.767 に答える
0

OpenCV tarball にあるサンプル コードを誤ってコンパイルしてしまい、そのコードをコンパイルしてしまいました。次に、ビルド スクリプトを調べたところ、次のコマンドが見つかりました。

g++ `pkg-config --cflags opencv` $1 -o $2 `pkg-config --libs opencv`

実はスクリプトです。$1最初の引数は .cpp ファイルで$2、2 番目の引数は出力ファイルです。このスクリプトを次のように使用します。

./build_cv.sh opencv_test.cpp test

注: スクリプト ファイル「build_cv.sh」に実行権限があることを確認してください。そうでない場合は、次のように入力して権限を変更します。

chmod +x build_cv.sh

今問題。最初の試みで、ヘッダー ファイルとライブラリの場所を指定していました。ソース ファイルを提供する前にヘッダーの場所を提供し、出力ファイルの後にライブラリの場所を提供する必要があります。これは私の経験です。他の人がコードをコンパイルする別の方法を持っているかもしれません。

于 2013-09-02T17:24:31.940 に答える