Ubuntu+OpenCV+QT

来源:互联网 发布:网络问卷调查怎么弄 编辑:程序博客网 时间:2024/04/30 17:02

最近出差,看不进去论文,遂干点杂活吧,比如搭个环境....考虑到以后肯定会用linux,先装个ubuntu熟悉一下,搭个OpenCV。

Step1:

http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html

这一步可能出现ippicv failed,解决方法是在CMAKE命令行中加入-D WITH_IPP=OFF。

这一步骤干了这几件事:下载opencv,解压,用cmake生成build前的makefile,用make命令对opencv源码进行build,生成各种库。

Step2:

编写测试程序opencvtest.cpp(在这一步前可能还需要配置环境变量,自行搜索吧)

#include<opencv2/highgui/highgui.hpp>using namespace cv;int main(){    Mat img = imread(“1.jpg”);    imshow("opencvtest",img);    waitKey(0);    return 0;}
在当前文件夹下放一个"1.jpg"

Step3:

编译和执行。编译就是用g++。都说clang好,以后再说吧。

$ g++ `pkg-config --cflags opencv` -o opencvtest opencvtest.cpp `pkg-config --libs opencv`$ ./opencvtest
编译肯定需要头文件和库文件啊,那两个pkg-config就是干这个事情的。

如果运行pkg-config --cflags opencv,返回的是:

-I/usr/local/include/opencv -I/usr/local/include
就是g++需要的include文件夹。注:CFLAGS and CXXFLAGS are either the name of environment variables or of Makefile variables that can be set to specify additional switches to be passed to a compiler in the process of building computer software.

而运行pkg-config --libs opencv,返回的是:

-L/usr/local/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core 
是build时用到的库。

更多关于pkg-config的内容,见http://www.cnblogs.com/youxin/p/4271978.html。

如果你嫌这一句g++太长了,也可以写成bash文件,具体见https://help.ubuntu.com/community/OpenCV中的compile_opencv.sh。


另外,这一篇写的也挺好的,可参考:http://www.cnblogs.com/lyutian/p/4425956.html


Step4:

总用g++编译也不是个事,装个IDE吧,这里选QT:http://download.qt.io/official_releases/,选个linux+android版本的,下载后安装(run文件需要右键->属性->执行->选为可执行)

为了方便debug单步调试,敲命令:

sudo gedit /etc/sysctl.d/10-ptrace.conf 
将其中的一句修改为:kernel.yama.ptrace_scope = 0
重启系统。

再进入QT,新建工程。在工程的prop文件中输入include和lib路径(这里lib不全,你可以自己填)

INCLUDEPATH += /usr/local/include \                /usr/local/include/opencv \                /usr/local/include/opencv2LIBS +=/usr/local/lib/libopencv_highgui.so \        /usr/local/lib/libopencv_core.so    \        /usr/local/lib/libopencv_imgproc.so
在main.cpp中写入上一步的测试代码,将"1.jpg"放到build_xxx_desktop_debug路径下(这个路径在QT->项目->构建目录 中看到),否则在imshow那一步会报错:

"the inferior stopped because it received a signal from the operating system. Signal name: sigabrt",这是因为imread没读到jpg文件嘛。

OK,现在可以在QT中运行测试代码了,还可以单步调试。但论IDE,个人还是觉得VS强大的多。


几个遇到的问题:

1.编译过程中:error: ‘rectangle’ was not declared in this scope
A:include "opencv2/imgproc.hpp"

2.linux下没有itoa和_itoa,出现编译错误
A:用sprintf(string,"%d",int)代替

3.在debug过程中传递argv参数给main
在QT界面选择“项目”->"构建和运行"->“运行”->Command line arguments

4.debug时进入汇编代码而不是C++
在汇编情况下,选择“调试”->选中“依照命令操作”->再取消“依照命令操作”,即可


0 0
原创粉丝点击