我已经开始学习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复杂得多,性能也相当。