如何使用opencv编译我的c程序



我已经开始学习OpenCV了。我在linux上工作。从他们的文档页面,我能够编译http://docs.opencv.org/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html#linux-gcc使用

然而,在那之后,我在试图声明一个新垫子及其构造函数时迷失了方向。所以我决定选择这本书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印度卢比买了这本书,今天才拿到,我不想看到它被浪费掉。我想从中学习。

请帮帮我。

CV_WINODW_AUTOSIZE拼写错误。正确的常数是CV_WINDOW_AUTOSIZE

cvLoadImage (argv[1]);应该是cvLoadImage (argv[1], 1);(用于加载彩色图像),因为C标准不支持默认参数。

顺便说一下,如果你正在使用OpenCV 2.0+,我建议你学习C++API。它比C API复杂得多,性能也相当。

相关内容

  • 没有找到相关文章

最新更新