环境安装与准备

下载opencv3.4.1.

或者

下载opencv3.2.0.

进入到opencv所在的目录新建目录build,install

安装cmake:

apt-get install cmake-qt-gui

安装gtk等:

apt-get install libgtk2.0-dev pkg-config

配置和生成

启动cmake:

cmake-gui

没有安装的话,根据提示进行安装即可,安装完成后进行配置:

Configur

上图:

Operation System --- arm-himix200-linux-gcc
gcc ---- /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc
g++ ---- /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-g++

点击Configure之后,设置安装路径,我的设置为:

配置CMAKE_EXE_LINKER_FLAGS:-lpthread -lrt -ldl

点击generate

修改出错的地方

修改1

出现错误:

Error 1 make[1]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/all] Error 2 make: *** [all]
Error 2 #### make failed to build some targets (1 seconds) ####

解决办法时找到3rdparty/protobuf/src/google/protobuf/common.cc文件,添加宏定义#define HAVE_PTHREAD:

修改2

如果上面配置了CMAKE_EXE_LINKER_FLAGS,就不会出现这个错误。

若没有配置出现错误:

../../lib/libopencv_core.so: undefined reference to `dlclose'
../../lib/libopencv_core.so: undefined reference to `dlsym'

解决办法时找到build目录下的CMakeCache.txt文件,在原文中修改:

CMAKE_EXE_LINKER_FLAGS:STRING= -lpthread -lrt -ldl

如图:

修改3

找不到zlib.h

这个版本的OpenCV已经包含了第三方的库3rdparty,

在CMAKE中加入:

修改4

CMAKE 中取消:WITH_GTK

编译和安装

编译

make -j16

安装

待编译完成之后,执行安装:

make install

安装之后在设置的路径下出现:

文件直达

测试

/install/lib/目录下所有的lib文件拷贝到板载系统的/lib`目录下;

我是在qt中使用opencv,提前已经编译好了可以在海思3519A上执行的qt,测试部分代码如下:

void cvTest()
{
Mat img = imread("lena.jpg"); Mat grad_x;
Sobel(img, grad_x, CV_16S, 1, 0);
Mat grad_y;
Sobel(img, grad_y, CV_16S, 0, 1); Mat gradImage = abs(grad_x) + abs(grad_y); double minGrad, maxGrad;
minMaxLoc(gradImage, &minGrad, &maxGrad);
Mat gradImage_8U;
gradImage.convertTo(gradImage_8U, CV_8U, 255./maxGrad); Mat thresholdedImage;//阈值化后的二值图
threshold(gradImage_8U, thresholdedImage, 20, 255, THRESH_BINARY_INV); imwrite("gradImage_8U.jpg",gradImage_8U);
imwrite("thresholdedImage.jpg",thresholdedImage); }

将生成的可执行文件拷贝到板载系统上,并运行:

测试结果如下:

这里需要注意到是:

由于编译的时候无法加入WITH_GTK选项,因而在板卡上执行的程序无法使用函数imshow

完整的测试程序下载

Ref

海思3519A上移植OpenCV3.x的更多相关文章

  1. QT-Embedded-4.5.3在海思35xx上移植

    QT4.5.3在海思3520A上移植步骤-修订版 2015年3月29日星期日, 16:59:03 1.首先要保证已经安装了海思的交叉编译器: #arm-hi  + Tab key to show wh ...

  2. 在海思芯片上使用GDB远程调试

    1 前言 使用海思平台上(编译工具链:arm-himix200-linux)交叉编译 GDB 工具(使用版本8.2,之前用过10.2的版本,在编译 gdbserver 遇到编译出错的问题,因为关联了其 ...

  3. 海思3519A 移植 Qt 5.5.1

    源码下载 网址:qt-everywhere-opensource-src-5.5.1.tar.gz 配置生成MakeFile 文件 解压源码包,在源码包路径下生成配置 MakeFile : ./con ...

  4. 海思3519A 移植ffmpeg

    文件下载 下载x264 git clone git://git.videolan.org/x264.git 下载ffmpeg git clone git://source.ffmpeg.org/ffm ...

  5. 海思3519A 开发环境设置相关

    设置板卡和虚拟机的网络参数 setenv serverip 192.168.1.107 setenv ipaddr 192.168.1.10 setenv gatewayip 192.168.1.1 ...

  6. 海思板卡SATA最佳读写块大小测试

    1    引言 应需求,在海思板子上测试SATA读写速度,用dd指令,每次分别读/写不同大小的块    (bs),同时检测运行dd命令CPU占比,记录读/写速度和CPU占比. 2    实验过程 2. ...

  7. 海思hi3516 ive运动目标检测简单实现

    在做车牌识别项目,通过先对识别区域内进行目标识别,能降低CPU的占用率,在检测到有运动目标的时候,再做车牌识别. //图像差分 s32Ret = HI_MPI_IVE_Sub(&IveHand ...

  8. 海思3519 qt ffmpeg 软解码播放avi

    在海思3519上基于qt采用ffmpeg对avi进行解码显示,其中ffmpeg的配置,qt的配置在前文中已经说明,在此不再赘述. 解码 解码在单独的线程中进行,具体的代码如下: void VideoP ...

  9. FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台

    FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待   前言   将ffmpeg移植到海思H ...

随机推荐

  1. duilib界面库

    xml编写界面库 notify控制程序 win32程序 winmain主函数 复杂控件自绘

  2. Mysql中结果集(mysql_result)与Traversable

    对于MySQL应该也不是很陌生吧,我常常爱犯的以错误就是执行mysli_qurey()后就使用数据,忘记返回的是结果集了.而对于lSELECT,.SHOW, DESCRIBE . EXPLAINmys ...

  3. JDBC 连接 MySQL 时碰到的小坑

    最近从MS SQL Server换到了MySQL,已经是8.11版本了,安装的时候似乎还用了新的身份认证方式之类的,连接过程中也是磕磕绊绊,碰到很多奇奇怪怪的问题,在此记录下来. 驱动加载: 以前使用 ...

  4. jquery中html()、text()、val()的区别

     (2013-03-26 10:49:16) 转载▼ 分类: jquery   .html()用为读取和修改元素的HTML标签 .text()用来读取或修改元素的纯文本内容 .val()用来读取或修改 ...

  5. Spring Data JPA初使用 *****重要********

    Spring Data JPA初使用 我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度. 在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样 ...

  6. css 字体上下居中显示 解决安卓手机line-height的偏差

      1.字体左右居中显示 text-align: center   <div class="font"> 上下居中 </div> .font{ width: ...

  7. UVa 12342 Tax Calculator (水题,纳税)

    今天在uva看到一个水题,分享一下. 题意:制定纳税的总额,有几个要求,如果第一个180000,不纳,下一个300000,纳10%,再一个400000,纳15%,再一个300000,纳20%,以后的纳 ...

  8. Thinkphp 导出大量数据 csv格式

    public function test2() { $user_count = M('department')->count(); $page = ceil($user_count / 1000 ...

  9. C++编译器之间的不同性能

    C++编译器之间的不同性能 编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序.一个现代编译器的主要工作流程:源代码 (source code) →预处理器 (preprocessor) → ...

  10. JSP Servlet中Request与Response所有成员方法的研究

    HttpServletRequest与HttpServletResponse作为Servlet中doGet.doPost等方法中传递的参数,承接了Http请求与响应中的大部分功能,请求的解析与响应的返 ...