OpenCV2.4.5在Ubuntu 13.04下配置过程(2)

注意mkdir build是必须的,cmake决定的
 cmake的参数中还是有些比较重要的东西的,v4l是linux下可以用来通过摄像头采集图像的库,其他的可以有可以没有,视我们的需要而定。
 make
 sudo make install
 sudo vim /etc/ld.so.conf.d/opencv.conf
 输入/usr/local/lib
 保存后,sudo ldconfig
 然后sudo vim /etc/bash.bashrc
 最后面添加
 PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
 export PKG_CONFIG_PATH
 保存后,要重启,不重启用不了。
 

重启后,如何测试配置正确。
 cd /usr/local/share/OpenCV/samples
 cd c
 sudo chmod +x build_all.sh
 sudo ./build_all.sh
 这时会出现
 /tmp/ccLJWE0c.o: In function `cvRound': opencv.c:(.text+0x19):
 undefined reference to `lrint' /tmp/ccLJWE0c.o: In function
 `cvDecRefData': opencv.c:(.text+0xa5c): undefined reference to
 `cvFree_' opencv.c:(.text+0xacd): undefined reference to `cvFree_'
 /tmp/ccLJWE0c.o: In function `cvGetRow': opencv.c:(.text+0xbc3):
 undefined reference to `cvGetRows' /tmp/ccLJWE0c.o: In function
 `cvGetCol': opencv.c:(.text+0xbee): undefined reference to `cvGetCols'
 /tmp/ccLJWE0c.o: In function `cvReleaseMatND': opencv.c:(.text+0xc01):
 undefined reference to `cvReleaseMat' /tmp/ccLJWE0c.o: In function
 这类的错误,根据stackoverflow的帖子
 
 解决办法是
 Try adding -lm, to include the math library that provides lrint
 在c后面添加-lm这个选项,修改build_all.sh
 修改后的内容为
 #!/bin/sh
 

if [ $# -gt 0 ] ; then
 base=`basename $1 .c`
 echo "compiling $base"
 gcc -ggdb `pkg-config opencv --cflags --libs` $base.c -o $base
 else
 for i in *.c; do
    echo "compiling $i"
    gcc -ggdb `pkg-config --cflags opencv` -o `basename $i .c` $i `pkg-config --libs opencv` -lm;
 done
 for i in *.cpp; do
    echo "compiling $i"
    g++ -ggdb `pkg-config --cflags opencv` -o `basename $i .cpp` $i `pkg-config --libs opencv`;
 done
 fi
 然后再编译c文件就不会出错了。
 这个帖子里提到很多有用的东西
 

1 添加-lm选项的理由
 
 2 链接器的相关知识
 
 
 #Invocation
 3 共享库的相关知识
 
 4 pkg-config的相关知识
 
 5 bash shell的一些扩展
 
 

回答这个问题的人,真是个活字典。
 编译完c文件夹下的代码,没有错误,执行./delaunay,可以看到图形界面,经典的opencv示例
 如果有摄像头,执行./fback_c,说不定能采集图像,这点我的电脑能,但不能保证都做到。

然后把build_all.sh复制到cpp文件夹下和gpu文件夹下,cpp下没有问题,就是gpu下提示cvconfig.h找不到,这点我没有解决,不过不影响执行斯坦福的那段光流源码,那么到此opencv2.4.5配置完成。
 有一点体会就是:每必要追求这么新的版本,2.2到2.3就可以了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/19717.html