1

私はOpenCVを学び始めました。私はLinuxに取り組んでいます。彼らのドキュメントページから、私はこれをコンパイルすることができました http://docs.opencv.org/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html#linux-gcc-usage

しかしその後、私は新しいマットとそのコンストラクターを宣言しようとして迷子になりました。そのため、この本を使用することにしましたhttp://www.amazon.com/Learning-OpenCV-Computer-Vision-Library/dp/0596516134 しかし、この本から最初のプログラムをコンパイルすることはできません。プログラムはここにあります:

#include "highgui.h"
int main(int argc, char** argv)
{
    IplImage* img = cvLoadImage (argv[1]);
    cvNamedWindow("Example1", CV_WINODW_AUTOSIZE);
    cvShowImage("Example1",img);
    cvWaitKey(0);
    cvReleaseImage(&img);
    cvDestroyWindow("Example1");
}

これをload.cという名前のファイルに保存しました

次に、CMakeLists.txtファイルを作成し、これをその中に入れました。

project( load )
find_package( OpenCV REQUIRED )
add_executable( load load )
target_link_libraries( load ${OpenCV_LIBS} )

ターミナルから「 cmake。 」を実行すると成功します。しかし、私が「make」を実行しているとき、それは私にこのエラーを与えます:

Scanning dependencies of target load
[100%] Building C object CMakeFiles/load.dir/load.o
/home/ishan/load/load.c: In function ‘main’:
/home/ishan/load/load.c:4:2: error: too few arguments to function ‘cvLoadImage’
/usr/local/include/opencv2/highgui/highgui_c.h:212:18: note: declared here
/home/ishan/load/load.c:5:28: error: ‘CV_WINODW_AUTOSIZE’ undeclared (first use in this  function)
/home/ishan/load/load.c:5:28: note: each undeclared identifier is reported only once for each function it appears in
make[2]: *** [CMakeFiles/load.dir/load.o] Error 1
make[1]: *** [CMakeFiles/load.dir/all] Error 2
make: *** [all] Error 2

この本の例は、現在2.4.3を実行しているOpenCV 1.x用であるためだと思いますが、このプログラムと本にある後続のプログラムを実行する方法が必要だと思います。問題はヘッダーファイルを正しくリンクすることにあると思います。最初に本を読み、ドキュメントからの参照を使用してから、ドキュメントに完全に切り替えたいと思います。しかし、本から学ぶことはドキュメンテーションよりもはるかに簡単なので、今のところ私は本から学びたいと思っています。さらに、この本を約3000インドルピーで購入し、今日入手しました。無駄になるのを見たくありません。そこから学びたい。

私を助けてください。

4

1 に答える 1

2

CV_WINODW_AUTOSIZEスペルが間違っています。正しい定数はCV_WINDOW_AUTOSIZE

cvLoadImage (argv[1]);cvLoadImage (argv[1], 1);C標準はデフォルトの引数をサポートしていないため、(カラー画像をロードするために)する必要があります。

ちなみに、OpenCV 2.0以降を使用している場合は、C++APIを学ぶことをお勧めします。C APIよりもはるかに複雑ではなく、パフォーマンスは同等です。

于 2013-02-04T18:39:36.070 に答える