笔者配置环境:
ubuntu:10.04
QT4.85
opencv2.44
首先下载源码。百度opencv
然后下载cmake或安装cmake-gui
在linux终端下#apt-get install cmka-gui
先解压opencv源码
然后在命令行中#cmake-gui
会弹出一个界面
其中第一行代表opencv源码目录:
第二行代表opencv编译生成库的中间目录,也就是要进入这个目录里执行make命令
然后点击Configure按钮,保持generator为Unix Makefiles,如果是给arm、平台编译opencv库的话,选择Specify options for cross-compiling,点击Next,如果是给PC机用的话,就直接默认配置,默认、bin/g++ gcc
按照如下方式配置(ARM):
注:/usr/local/arm/4.3.2 为交叉编译工具 arm-linux-g++/gcc 的所在包含文件夹(在bin文件夹里面)
然后点击 “Finish” 按钮;
修改默认配置,默认安装目录为/usr/local,但我想对它统一归类,所以我在/usr/local/arm/4.3.2/lib目录下新建了一个opencv文件夹,在Cmake-gui里修改CMAKE_INSTALL_PREFIX变量改为/usr/local/arm/4.3.2/lib/opencv/
(另外,如果没有安装tiff图像的支持,请去掉WITH_TIFF)
如果给PC机编译库文件,想用opencv里面的图形界面函数(创建window之类),或者想让opencv的
例程运行出效果就得选上:BUILD—GTK WITH——GTK 最好再选上V4L2和V4L,对摄像头支持
其中MAKE INSTALL PREFIX 选项中的参数为最终生成的库的安装路径,也就是make install 后文件安装到了所指定目录
然后点击Generate按钮生成Makefile;
4、在终端界面中,进入目录/usr/local/opencv/opencv-arm,运行make编译opencv
编译时发现如下错误:
Linking CXX executable ../../bin/opencv_createsamples
../../lib/libcxcore.so: undefined reference to `clock_gettime'
../../lib/libcxcore.so: undefined reference to `pthread_key_create'
../../lib/libcxcore.so: undefined reference to `pthread_getspecific'
../../lib/libcxcore.so: undefined reference to `pthread_setspecific'
原因是cmake不认识我定义的arm-linux系统标记,没有加上库pthread和rt的链接选项
此时需要修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,如下图:
重新make编译,错误消除,编译成功之后的界面如下:
5、然后运行make install,将opencv生成的库和头文件安装到目录/usr/local/lib(默认目录):
在使用时偶尔会出现,wrong file format ,也就是说文件格式错误,用file 命令检查下库文件属性,看看是8036 还是 ARM 偶尔会出现两种平台的文件混在一起了,最好重新编译一次,
在QT中,打开.pro文件。
在后面添加:
INCLUDEPATH +=你的opencv头文件目录 (默认:/usr/local/include)
LIBS +=你生成的opencv库的路径/*.so(默认:/usr/local/lib/*.so)