4

VMwareでUbuntu12.0432ビットを実行しました。この後、OpenCV 2.4.2をインストールしました(http://www.samontab.com/web/2011/06/installing-opencv-2-2-in-ubuntu-11-04/)。

CV-Page( http://docs.opencv.org/doc/tutorials/imgproc/shapeescriptors/find_contours/find_contours.html )からfindContoursの例を実行しようとすると、コンパイルされますが、「findContours」呼び出しでクラッシュします。

OpenCV Error: Assertion failed (k == STD_VECTOR_MAT) in release, file /build/build   /opencv-2.3.1/modules/core/src/matrix.cpp, line 1364
terminate called after throwing an instance of 'cv::Exception'
what():  /build/buildd/opencv-2.3.1/modules/core/src/matrix.cpp:1364: error: (-215) k == STD_VECTOR_MAT in function release

わからない、何が問題なのか...

Eclipseでコードを実行します。CDTビルドコンソールによると:

make all 
Building file: ../src/FrameTest.cpp
Invoking: Cross G++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/FrameTest.d" -MT"src/FrameTest.d" -o "src/FrameTest.o" "../src/FrameTest.cpp"
../src/FrameTest.cpp:26:2: warning: "/*" within comment [-Wcomment]
../src/FrameTest.cpp: In function ‘int main()’:
../src/FrameTest.cpp:319:25: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
../src/FrameTest.cpp: In function ‘void thresh_callback(int, void*)’:
../src/FrameTest.cpp:345:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
Finished building: ../src/FrameTest.cpp

Building target: FrameTest
Invoking: Cross G++ Linker
g++ -L/home/ubu/workspace/opencv -L/usr/share -L/usr/share/doc/libcv-dev -L/lib -L/lib/i386-linux-gnu -L/home/ubu/OpenCV-2.4.2/include/opencv -L/home/ubu/OpenCV-2.4.2/include/opencv2 -o "FrameTest"  ./src/FrameTest.o   -lopencv_core -lopencv_highgui -lpthread -lopencv_imgproc
Finished building target: FrameTestenter code here

誰かがアイデアを思いついた?VS2010を搭載したWindowsでCV2.2を使用して実行されている古いプロジェクトから他のコードを取得しましたが、動作します... Winを使用したVStudioとEclipseおよびUbuntuの違いはどこにありますか?

これまでのところありがとう。

4

1 に答える 1

4

2 つのバージョンの OpenCV がインストールされているようで、リンカはコードのコンパイルに使用されたものとは別のバージョンをリンクに使用しようとします。

最も簡単な方法は、他のすべての古い OpenCV バージョンを削除することです。これにより、間違ったライブラリ パスがより明確になります。すべての設定 PATH、リンカー フラグ、インクルード フォルダーをチェックして、インクルード/コンパイル/リンク設定で同じバージョンを使用していることを確認します。

于 2012-11-12T14:55:11.030 に答える