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

我认为这是因为本书中的这个例子是针对 OpenCV 1.x 而我目前正在运行 2.4.3,但是我相信必须有一种方法来运行这个程序和书中的后续程序。我认为问题在于正确链接头文件。我想先阅读本书并使用文档中的参考,然后完全切换到文档。但是现在我希望从这本书中学习,因为从书中学习对我来说比文档要容易得多。另外,我花了大约 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 回答