海思Hi3519A开发(4.移植OpenCV4.0.1到Hi3519A开发板)
文章目录1 准备工作2 设置 cmake1 准备工作在 ubuntu 上安装 cmake-guisudo apt-get install cmake-gui下载opencv及contrib源代码到虚拟机opencv下载opencv_contrib下载2 设置 cmake创建文件夹 build_hi3519a,在该文件夹下创建文件夹 install解压 opencv 压...
1 准备工作
- 在 ubuntu 上安装
cmake-gui
sudo apt-get install cmake-gui
- 下载opencv及contrib源代码到虚拟机
opencv下载
opencv_contrib下载
2 设置 cmake
-
创建文件夹
build_hi3519a
,在该文件夹下创建文件夹install
-
解压
opencv
压缩包 -
使交叉编译工具链生效
source /etc/profile
export LC_ALL=C
-
命令行下输入:
cmake-gui
-
填写你的
opencv
解压目录和刚刚创建的build_hi3519a
目录地址
-
选择 Configure,之后选择第四个选项,点击 Next
-
设置如下,其中 C 和 C++ 内填交叉编译工具链地址,Target Root 先不填
-
点击 Finish 会 Configure 一直到成功
-
选择CMAKE_INSTALL_PREFIX。 install 是刚刚创建的,后面的 make install 会把编译好的opencv libs拷贝到该目录下
-
给 CMAKE_EXE_LINKER_FLAGS 加上参数
-lpthread -lrt -ldl
-
设置 CMAKE_FIND_ROOT_PATH 为交叉编译工具链的 bin 目录
-
勾选 BUILD_opencv_world
-
点击 Generate,等待完成
-
此时可以关闭 cmake-gui 界面
3 编译
- 进入之前解压的 opencv 源代码文件目录下
- 进入目录
cd 3rdparty/protobuf/src/google/protobuf/stubs
- 修改内容:
vim common.cc
在头文件下添加内容:
#define HAVE_PTHREAD
- 进入
build_hi3519a
目录下编译
make -j4
make install
- 编译完成后可以在
install
目录下看到libopencv_world.so
文件
4 移植
- 将生成的
libopencv_world.so
文件拷贝到/opt/hisi-linux/x86-arm/arm-himix200-linux/lib
目录下 - 精简 so 文件
arm-himix200-linux-strip libopencv_world.so
使用ls -lh
可以看出现在libopencv_world.so
已经明显变小 - 复制精简后的
libopencv_world.so
到开发板的/lib
目录下 - 最后检验是否成功
创建 demo.cpp 文件
#include <iostream>
#include <stdio.h>
#include <opencv2/highgui.hpp>
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat image(200, 150, CV_8UC1);
for (int i = 0; i < image.rows; i++)
{
uchar* p = image.ptr<uchar>(i);
for (int j = 0; j < image.cols; j++)
{
if (i < 80 && i>50)
{
p[j] = 0;
}
else
{
p[j] = 255;
}
}
}
imwrite("demo.jpg", image);
return 0;
}
- 交叉编译命令
arm-himix200-linux-g++ -Wno-psabi -I /home/build_hi3519a/install/include/opencv4/ -L /home/build_hi3519a/install/lib/ -lopencv_world -lpthread -lrt -ldl -o demo demo.cpp
- 将可执行文件 demo 复制到开发板,执行生成 demo.jpg 文件
- 复制 demo.jpg 到虚拟机查看
5 编译静态库
在 勾选 BUILD_opencv_world 之后再取消勾选 BUILD_share的有关选项。
经过实验opencv4.0.1 opencv3.4.11对arm64位支持不是很好。opencv4.0.1可以编译出静态库,但是链接的时候会报错。opencv3.4.11直接就无法编译出来。
最后选择使用opencv3.4.3版本
链接的时候,命令变为
libopencv_world.a libIlmImf.a liblibjasper.a liblibjpeg-turbo.a liblibpng.a liblibtiff.a liblibwebp.a libzlib.a -lpthread -lrt -ldl -lm
其他的静态库在 ./share/3rd…/lib 目录下
6 下载
更多推荐
所有评论(0)