Hi3519A移植OpenCV-3.4.11

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

3.修改编译链

vim /opt/hisi-linux/x86-arm/arm-himix200-linux/target/usr/include/features.h

在354行添加  #define _FILE_OFFSET_BITS 64

其后是#if define _FILE_OFFSET_BITS &&_FILE_OFFSET_BITS == 64

4.cmake-gui 配置

    命令行下输入:
    cmake-gui

    填写你的 opencv 解压目录和刚刚创建的 build_hi3519a 目录地址
   

    选择 Configure,之后选择第四个选项,点击 Next
   

    设置如下,其中 C 和 C++ 内填交叉编译工具链地址,Target Root 为对应bin文件
   

    点击 Finish 会 Configure 一直到成功
 

    选择CMAKE_INSTALL_PREFIX。 install 是刚刚创建的,后面的 make install 会把编译好的opencv libs拷贝到该目录下
  

    给 CMAKE_EXE_LINKER_FLAGS 加上参数 -lpthread -lrt -ldl

    设置 CMAKE_FIND_ROOT_PATH 为交叉编译工具链的 bin 目录
  

给CMAKE_CXX_FLAGS加参数-fpermissive

设置ZLIB_INCLUDE_DIR 为 opencv/opencv-3.4.11/3rdparty/zlib

勾选 BUILD_opencv_world
 

取消勾选 BUILD_SHARED_LIBS的有关选项可编译静态库

    点击 Generate,等待完成
 

    不报错后可以关闭 cmake-gui 界面

5 编译

    进入之前解压的 opencv 源代码文件目录下
    进入目录 cd 3rdparty/protobuf/src/google/protobuf/stubs
    修改内容:
    vim common.cc
    在头文件下添加内容:
    #define HAVE_PTHREAD
    进入 build_hi3519a 目录下编译
    make && make install
    编译完成后可以在 install 目录下看到 libopencv_world.so 文件

6 移植

    将生成的 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;
}

7 交叉编译命令
    arm-himix200-linux-g++ -Wno-psabi -I /home/***/share/build_hi3519a/install/include/  -L /home/***/share/build_hi3519a/install/lib/ -lopencv_world -lpthread -lrt -ldl -o demo demo.cpp
将可执行文件 demo 复制到开发板,执行生成 demo.jpg 文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值