我已经开始学习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 INR并且今天就拿到了它,我不想看到它浪费。我想从中学习。
请帮帮我。
答案 0 :(得分:2)
CV_WINODW_AUTOSIZE
被拼错了。正确的常量是CV_WINDOW_AUTOSIZE
cvLoadImage (argv[1]);
应为cvLoadImage (argv[1], 1);
(用于加载彩色图像),因为C标准不支持默认参数。
顺便说一句,如果您使用的是OpenCV 2.0+,我建议您学习C++ API。它比C API复杂得多,而且性能可比。