运行第一个OpenCV程序

#include "highgui.h"

int main(int argc, char ** argv) {

  IplImage *img = cvLoadImage(argv[1]);

  cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);

  cvShowImage("Example1", img);

  cvWaitKey(0);

  cvReleaseImage(&img);

  cvDestroyWindow("Example1");

}

很简单的一个程序,接下来要做的事情就是编译与链接了。

通过观察OpenCV-2.4.2/samples/c/build_all.sh,可以找到编译链接命令 :

  g++ `pkg-config --cflags opencv` -o filename filename.cpp `pkg-config --libs opencv`

  这样就可以生成可执行文件。

现在我们可以进一步分析这条命令:

  运行pkg-config --cflags opencv,得到结果-I/usr/local/include/opencv -I/usr/local/include

  运行pkg-config --libs opencv,得到结果:/usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_contrib.so /usr/local/lib/libopencv_core.so /usr/local/lib/libopencv_features2d.so /usr/local/lib/libopencv_flann.so /usr/local/lib/libopencv_gpu.so /usr/local/lib/libopencv_highgui.so /usr/local/lib/libopencv_imgproc.so /usr/local/lib/libopencv_legacy.so /usr/local/lib/libopencv_ml.so /usr/local/lib/libopencv_nonfree.so /usr/local/lib/libopencv_objdetect.so /usr/local/lib/libopencv_photo.so /usr/local/lib/libopencv_stitching.so /usr/local/lib/libopencv_ts.so /usr/local/lib/libopencv_video.so /usr/local/lib/libopencv_videostab.so

  gcc通过-I指定头文件的搜索路径,通过-l+库名指定链接的库,也可以直接将库名加在后面。

  这里将所有可能用的的库都加上了,其实本程序仅仅使用了HighGUI和CXCORE两个模块(库)。HighGUI中调用了CXCORE模块(库)。

  于是这个程序的编译链接命令可以最终简化为:

   g++ -I/usr/local/include/opencv -o showimage showimage.cpp /usr/local/lib/libopencv_highgui.so /usr/local/lib/libopencv_core.so

  或  g++ -I/usr/local/include/opencv -o showimage showimage.cpp -lopencv_highgui -lopencv_core

  最后需要说明的是这里库的所在路径已经在/etc/ld.so.conf中指定,为/usr/local/lib。

 

转载于:https://www.cnblogs.com/mantic-block/archive/2012/10/24/2737890.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值