编译基于armV8架构的opencv,并在rock3a开发板上运行

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

近期在基于arm开发板做图像识别任务开发时需要用到Opencv库

之前在做rknpu开发时开发sdk里面已经集成了opencv 但是该opencv开发包不能实现imshow/VideoCapture等函数经过调研决定对opencv源代码进行编译生成armv8架构可以使用的开发包

第一部 下载opencv:

opencv的下载路径为  https://opencv.org/releases/

 

这里下载3.x版本的  至于为什么用这个版本我不得而知因为之前用的就是3.x版本。目标我也不知道4.x版本和3.x版本之间的区别是什么。

第二步 就是下载armv8平台上的gcc和g++编译器

这里的aarch64 对应的就是avmv8的64位版本

 第三步  进入opencv源代码路径下编译安装opencv源码

键入命令 mkdir  mybuild 新建一个文件夹 用来保存编译的文件

键入命令 mkdir  cv_sdk  用来保存编译后生成的库文件  头文件等文件

 第四步 安装cmake cmake-gui等c++编译环境  这里我已经安装完成 故不进行截图了

第五步 采用cmake-gui 搭建编译选项

点击next

 

这里需要选择第一个选项 也就是aarch64开头的cmake 文件然后点击finish 

设置这两个值 分辨是cmake_build_type 和 cmake_install_prefix 

 

 选中with_gtk_2_x 去掉选中with_gtk

再次点击Configure 和 Generate 关闭cmake-gui 

第六步  键入命令sudo make -j4 && make install  

等待编译安装完成 

完成后就会得到 如下图所示的文件夹 bin是可执行文件夹 include是头文件夹  lib是库文件夹 share是cmake文件夹 

到此为止  arm版的opencv已经编译完成

接下来 我们采用cmake 和 已经编译好的 Opencv 写一个简单的图像处理程序 

这个程序有一个亮点  一个是将编译好的动态库文件和头文件  直接拷贝到当前文件目录下这样的话就方便产品灵活部署即在其他设备上 不用安装编译Opencv

下图为整个程序的架构

 

接下来看看CMakeLists.txt文件内容

cmake_minimum_required(VERSION 3.1)
project(opencv)
include_directories(/home/rock/opencv_test1/cv_sdk/include)
link_directories(/home/rock/opencv_test1/cv_sdk/lib)
add_executable(opencv opencv.cpp)
target_link_libraries(opencv /home/rock/opencv_test1/cv_sdk/lib/libopencv_highgui.so.3.4.5                            /home/rock/opencv_test1/cv_sdk/lib/libopencv_imgcodecs.so.3.4.5                             /home/rock/opencv_test1/cv_sdk/lib/libopencv_imgproc.so.3.4.5
/home/rock/opencv_test1/cv_sdk/lib/libopencv_video.so.3.4.5
/home/rock/opencv_test1/cv_sdk/lib/libopencv_core.so.3.4.5
/home/rock/opencv_test1/cv_sdk/lib/libopencv_videoio.so.3.4.5

        )

 接下来看看源文件

#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"


int main()
{
    cv::VideoCapture cap;
    cv::Mat srcImage = cv::imread("1.jpg");
    cv::Mat img;
    cv::cvtColor(srcImage, img, cv::COLOR_BGR2RGB);
    //cv::imwrite("resize_input.jpg", srcImage);
    cv::imwrite("resize_input.jpg", img);
    //cv::Mat img;
    cv::cvtColor(srcImage, img, cv::COLOR_BGR2RGB);
    cv::imshow("源图像",srcImage);
    cv::waitKey(0);
    return 0;
}

在build文件夹下进行编译 

得到可执行文件 

说明opencv的编译是成功的

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6