系统:虚拟机ubuntu16.04

参考大牛贴:

https://blog.csdn.net/avideointerfaces/article/details/89477828

我基本上都是按照这位老师的帖子进行的,大部分都一样,中间遇到了一些问题,因此自己记录下来。

1、 下载

下载opencv343,opencv343-contrib

wget -O opencv-3.4.3.zip https://github.com/Itseez/opencv/archive/3.4.3.zip

wget-O opencv_contrib-3.4.1.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip

unzip opencv-3.4.3.zip

unzip opencv_contrib-3.4.1.zip

2、 安装cmake和cmake-gui

apt install cmake cmake-gui –y

3、 使用cmake-gui生成编译文件,主要是generate之后的一些配置

  • l 执行cmake-gui,打开界面,配置如下,build路径需要自己新建:

a84c792d47b88547222af553945b8b6d.png
  • l 配置点击configure-cross com…:

0db971edd1d4a54a437b62a96793f9ab.png

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++

  • 点击finish后会configure一会直到成功
  • 修改配置选项

1) 修改CMAKE_INSTALL_PREFIX

文件夹是我自己创建的

dccf9c82af895fb690ca133f9c00006d.png

2) 添加OPENCV_EXTRA_MODULE_PATH,也就是contrib路径

a2bec86fac0637e1f3c05349bc22f955.png

3) 添加CMAKE_EXE_LINKER_FLAGS

为防止后续源代码编译错误,还得加上下面配置 -lpthread –lrt -ldl

94e3dfbed2340f66873d547873bb8a56.png

这个是参考,我这样运行时,提示了一个错误:-lrt 找不到文件或目录

所以,我直接把-lrt删除了,重新generate后make,就成功了。

I don’t know why

2a68c65cf373e0a3ac5d041eea072746.png

4) 添加ZLIB_INCLUDE_DIR

这个错误其实是我在编译的时候发现的,找不到zlib,采坑无数你懂得,所以这次就直接填上

路径: opencv-3.4.3/3rdparty/zlib

9d01621254c41b5786381258f72d91c4.png

5) 添加CMAKE_FIND_ROOT_PATH

主要是为了保险,路径

/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/

ed8d1c0c0e46a690713ed57e52121e13.png

6) 选中编译opencv_world库

aa2a12bf73d559eede8e06ae5ad737a0.png

7)配置完成后点击generate来生成可编译得opencv代码。

b6f825e6fe9cda018728d61713621087.png

4、 编译过程调试,主要是缺失文件补充和包含文件路径的修改

l 虚拟机内存和核心修改

刚装好ubuntu虚拟机的时候,使用cmake-gui都好好,后来也不知道为什么,cmake-gui开启之后整个ubuntu系统都卡死了。用free看了一下内存情况,还剩余90%的内存呢,也不知道为什么会卡死(希望有经验的同学们指导一下我~)。查了一顿资料,有增加内存容量,增加cpu个数等等。我建虚拟机的时候就是8G的内存了,所以没有增加。查了一下cpu设置的个数是宿主机的一半比较合适,我设置了8个。设置完确实好转了,特别是make –j8的时候,opencv的编译大概在5min可以完成。下面是我的虚拟机配置。

16324cd737ab028b70176b6ea9246c41.png

l make –j8开始编译

c70aa5b6833e638d016a4b1e91b11d00.png
  • 错误1 No suitable threading library available

解决方法:

vi ../opencv-3.4.3/3rdparty/protobuf/src/google/protobuf/stubs/http://common.cc

添加#Define HAVE_PTHREAD

da207d3be50df1c91ba74bcc1f8282db.png

c70aa5b6833e638d016a4b1e91b11d00.png
  • 缺失文件补充

fatal error: vgg_generated_120.i,vgg_generated_80.i,vgg_generated_40.i,vgg_generated_64.i,boostdesc_bgm.i等

25737a9d7cd432b3ea4fb1862afa0321.png

解决方法,

把确实的文件下载下来,拷贝进opencv_contrib-3.4.3/modules/xfeatures2d/src文件夹下,继续编译就好了。

缺失文件下载路径:

链接:https://pan.baidu.com/s/1-PA3ItqCCiaNUXZxIHHiIg

提取码:xlpn

修改include路径:

opencv-3.4.3/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:42: fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory

# include "opencv2/xfeatures2d/cuda.hpp"

0aa3927c8d0ee4e033206cae9fac391e.png

20cd6ba94f1e492f225f30144e382e81.png

类似错误都是修改include路径,或者在cmaklist里面包含(这个应该是最方便的,我因为不熟没有尝试,好在报错的不多,我就一一按照错误提示修改了头文件)

20cd6ba94f1e492f225f30144e382e81.png

c70aa5b6833e638d016a4b1e91b11d00.png
  • 修改完所有的错误,make -j 编译成功
  • make install 安装成功

197e4866871d3c0353e1b84d745b2007.png

Cd lib

看到所有的库也都编译好了

760944f342f58ac7de0cc618ce07301f.png

大功告成

5、 测试

c70aa5b6833e638d016a4b1e91b11d00.png

编写一个测试demo

  • #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, 200, CV_8UC1);
    Image = 255;
    imwrite("demo.jpg", image);
    Mat im = imread("demo.jpg");
    im -=100;
    imwrite("demo1.jpg",im);
    return 0;
    }
  • 交叉编译:

arm-himix200-linux-g++ -I /home/sansa/opencv-3.4.3/install_hi3516dv300/include -L /home/sansa/opencv-3.4.3/install_hi3516dv300/lib -lopencv_world -lpthread -lrt -ldl -o demo test_opencv.cpp

  • 把生成的demo和opencv生成的lib都拷贝进nfs
  • 进入面板机系统,执行的demo程序

在执行demo程序之前,首先要添加lib的搜索路径:

Cd lib

export LD_LIBRARY_PATH="$PWD:$LD_LIBRARY_PATH"

./demo

运行成功

我编译好的opencv:

zip文件是官网下载好的源码,没有做任何修改

加压后的文件是我在编译过程中修改好的

984aa12ae487ec4211123c8e1b02cc57.png

链接:https://pan.baidu.com/s/19_WxuMVk3odXbM3dIVzVbQ

提取码:ca7x

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐