原文:https://blog.csdn.net/Guet_Kite/article/details/78667175?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!
接下来就是下载opencv了:
下载地址:http://blog.csdn.net/yanzi1225627/article/details/47668021
下载好之后解压:unzip opencv-2.4.11.zip
cd opencv-2.4.11.zip
建两个文件夹来存放配置和安装路径:
sudo mkdir /usr/local/opencv/install_opencv -d
sudo mkdir /usr/local/opencv/config_opencv -d
然后用cmake配置:
sudo cmake-gui
在where is the source code:里写上opencv的源文件路径
在where to build the binaries:里面写上作为cmake编译arm版本的工作目录
然后点击configure
这里generator保持为Unix Makefiles,然后选择第四个选项:Specify options for cross-compiling
最后点击Next
这里Targeting System选的是Linux(之前我选的是arm-linux,有点坑,选这个没有V4L支持),
接着就是选择工具链了,我用的是友善的4.4.3的工具链,Compliers写的是交叉编译工具 arm-linux-gcc、arm-linux-g++
Target Root写的是交叉编译工具 arm-linux-g++/gcc 的所在包含文件夹
最后点击 Finish即可
然后中间红色的配置里:
取消WITH_GTK
取消WITH_TIFF
选择WITH_QT
GTK配置比较麻烦,我Ubuntu之前就配置好有QT了,所以我们取消掉,直接用QT最GUI。如果没有配置有QT,那还是不选吧。
最后点击Configure,会发现有错误:Error in configuration process,project files may be invalid
CMake Warning at cmake/OpenCVFindLibsGUI.cmake:18 (find_package):
By not providing “FindQt5Core.cmake” in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by “Qt5Core”, but
CMake did not find one.
Could not find a package configuration file provided by “Qt5Core” with any
of the following names:
Qt5CoreConfig.cmake
qt5core-config.cmake
第一个是一个warning,不管,下一个是error,说的是”Qt5Core”没找到。
我的QT安装路径是:/work/qt/my_qt/
所以直接把/work/qt/my_qt/lib/cmake/Qt5Core 填到Qt5Core_DIR选项即可,
同理,底下几个选项也要填上,Qt5Gui_DIR、Qt5Test_DIR等…….
最后点击Configure无误后,点击Generate按钮就会在/usr/local/opencv/install_opencv目录生成Makefile
cd /usr/local/opencv/config_opencv
修改安装opencv的路径:
sudo vi CMakeCache.txt
找到:CMAKE_INSTALL_PREFIX:PATH=/usr/local
修改为:CMAKE_INSTALL_PREFIX:PATH=/usr/local/opencv/install_opencv
这是我自己的安装路径。
接着sudo make编译
最后把/usr/local/opencv/install_opencv/lib下文件移植到开发板根文件lib下
好了,我们测试下:
从网上找到一个测试例子,然后修改下,test.cpp:
#include <cv.h> #include <cxcore.h> #include <highgui.h> #include <iostream> using namespace std; int main(int argc, char **argv) { CvCapture* capture = NULL; IplImage* frame = NULL; if(!(capture = cvCaptureFromCAM(0))) { cout<<"Can not open camera.\n"<<endl; return -1; } cvNamedWindow("video", 1); while(frame = cvQueryFrame( capture )){ cvShowImage("video",frame); cout<<"have capture\n"<<endl; } cout<<"no have capture\n"<<endl; cvDestroyWindow("video"); cvReleaseCapture(&capture); return 0; }
编译:
arm-linux-g++ -I/usr/local/opencv/install_opencv/include/opencv/ -L/usr/local/opencv/install_opencv/lib/ -lcv -lcxcore -lhighgui -lpthread -lrt -o test test.cpp
出现:
test.cpp:21: note: the mangling of ‘va_list’ has changed in GCC 4.4
在GCC 4.4里,’va_list’已经被改变了,所以我们编译时,要加上 -Wno-psabi选项:
arm-linux-g++ -Wno-psabi -I/usr/local/opencv/install_opencv/include/opencv/ -L/usr/local/opencv/install_opencv/lib/ -lcv -lcxcore -lhighgui -lpthread -lrt -o test test.cpp
那么,这样可以了吗?
不行!出现:
/usr/local/arm/opt/FriendlyARM/toolschain/4.4.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.3