本帖最后由 myzr_soft 于 2020-1-16 16:44 编辑
主机平台: UBUNTU14.04
硬件平台:明远智睿MY-IMX6-EK200-6Q-1G
内核版本 :linux-4.1.15
交叉编译链:arm-linux-gnueabihf
下载:
安装cmake3: $ sudo apt-get install cmake3-qt-gui
配置交叉工具链: $ export PATH=/home/myzr/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/binPATH 创建工作目录并解压: $ mkdir opencv 将源码包复制到opencv目录 $ cd opencv $ mkdir install $ tar xzvf zlib-1.2.11.tar.gz $ tar xzvf libpng-1.6.37.tar.gz $ tar xzvf jpegsrc.v9c.tar.gz $ tar xzvf yasm-1.3.0.tar.gz $ tar xzvf xvidcore-1.3.5.tar.gz $ tar xf ffmpeg-3.4.6.tar.bz2
$ cd zlib-1.2.11/ $ RANLIB=AR=arm-linux-gnueabihf-ranlib AR=arm-linux-gnueabihf-ar CC=arm-linux-gnueabihf-gcc ./configure --prefix=/home/myzr/opencv/install/ --shared $ make $ make install
$ cd ../jpeg-9c/ $ ./configure --host=arm-linux-gnueabihf --prefix=/home/myzr/opencv/install/ --enable-shared --enable-static $ make $ make install
$ cd ../libpng-1.6.37/ $ CC=arm-linux-gnueabihf-gcc ./configure --prefix=/home/myzr/opencv/install/ --host=arm-linux LIBS=-L/home/myzr/opencv/install/lib CPPFLAGS=-I/home/myzr/opencv/install/include $ make $ make install
$ cd ../yasm-1.3.0/ $ ./configure --host=arm-linux-gnueabihf --prefix=/home/myzr/opencv/install/ --enable-shared $ make $ make install
$ cd ../x264-snapshot-20190822-2245/ $ CC="arm-linux-gnueabihf-gcc -fPIC" ./configure --enable-shared --host=arm-linux-gnueabihf --disable-asm --prefix=/home/myzr/opencv/install/ $ make $ make install
$ cd ../xvidcore/build/generic/ $ CC=arm-linux-gnueabihf-gcc ./configure --prefix=/home/myzr/opencv/install/ --host=arm-linux-gnueabihf --disable-assembly $ make $ make install
$ cd ../../../ffmpeg-3.4.6/ $ ./configure --prefix=/home/myzr/opencv/install/ --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=arm-linux-gnueabihf-gcc --enable-swscale --extra-ldflags=-L/home/myzr/opencv/install/lib --extra-cflags=-I/home/myzr/opencv/install/include $ make $ make install
$ cd ../opencv-3.2.0/ $ mkdir build $ mkdir install $ cd build/ $ cmake-gui
在search下搜索WITH_TIFF去掉勾选,搜索CMAKE_BUILD_TYPE,把值改为Release,搜索CMAKE_INSTALL_PREFIX,把值改为install的路径
点击Generate生成Makefile 关闭cmake $ vi CMakeCache.txt 找到 CMAKE_EXE_LINKER_FLAGS 一行 在后面加上-lpthread -lrt -ldl 开始编译 $ make 错误:../../3rdparty/lib/libzlib.a: error adding symbols: 错误的值 $ vi ../3rdparty/zlib/CMakeLists.txt 将: 改为: 错误:../../3rdparty/lib/liblibjpeg.a: error adding symbols: 错误的值 $ vi ../3rdparty/libjpeg/CMakeLists.txt 与上同理
错误:../../3rdparty/lib/liblibwebp.a: error adding symbols: 错误的值 $ vi ../3rdparty/libwebp/CMakeLists.txt 与上同理
错误:../../3rdparty/lib/liblibpng.a: error adding symbols: 错误的值 $ vi ../3rdparty/libpng/CMakeLists.txt 与上同理
错误:../../3rdparty/lib/liblibjasper.a: error adding symbols: 错误的值 $ vi ../3rdparty/libjasper/CMakeLists.txt 与上同理 错误:../../3rdparty/lib/libIlmImf.a: error adding symbols: 错误的值 $ vi ../3rdparty/openexr/CMakeLists.txt 与上同理
$ make install
/home/myzr/opencv/opencv-3.2.0/install/ 目录下的即为编译得到的文件 将lib中的库移植到开发板的/lib目录
注意:默认是选择的显示方式为gtk,但是由于开发板默认没有gtk的库,所以要显示的话,会输出需要 libgtk2.0-dev and pkg-config
而若是在cmake时,选择with_qt,并且将Ungrouped Entries中QT的库设置为相应的qmake所在路径后 将选择QT作为显示,但是在开发板上运行时提示需要插件'xcb',但是开发板中的QT是没有xcb.
最终,在网上的opencv移植的帖子中找到了没有使用到显示的例程,原帖链接为:https://blog.csdn.net/houge101/article/details/79433503
例程:
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main( )
{
//载入图片
Mat image= imread("girl.jpg");
Mat logo= imread("fly.jpg");
//定义一个Mat类型,用于存放,图像的ROI
Mat imageROI;
imageROI= image(Rect(10,10,logo.cols,logo.rows));//定义一个左上角点坐标为(_x, _y)的cols*rows矩形窗口
//将logo加到原图
//参数:图、权重、图、权重、添加的常数项、输出图
addWeighted(imageROI,0.5,logo,0.3,0.,imageROI);
cout << "start add picture......\n" << endl;
//输出一张jpg图片到工程目录下
imwrite("fly_girl.jpg",image);
waitKey();
return 0;
}
例程编译:
指定 PKG_CONFIG_PATH 为opencv.pc 所在路径
$ export PKG_CONFIG_PATH=/home/myzr/opencv/opencv-3.2.0/build/unix-install
交叉编译:
$ arm-linux-gnueabihf-g++ opencv.cpp -o opencv `pkg-config --cflags --libs opencv`
将编译得到的opencv测试程序与两张jpg图片复制到开发板中执行
# ./opencv
将输出的图片通过U盘复制到电脑查看
图片一:
图片二:
图片三:
|