当前位置: 首页 > news >正文

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

近期在基于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的编译是成功的

相关文章:

  • wordpress底部版权信息/网络营销策略都有哪些
  • wordpress amp/怎么建网址
  • 打开网站弹出qq/色盲测试图第六版
  • 广西网站设计欣赏/太原网站关键词排名
  • 网站的设计原则/杭州seo中心
  • php做简单网站教程/个人网站该怎么打广告
  • Unity | 序列化(Serialized)和反序列化(NonSerialized)是什么意思
  • C/C++路面导航系统[2023-01-16]
  • Leetcode:669. 修剪二叉搜索树(C++)
  • 装修--避坑--美缝知识
  • 技术分享 | MySQL Shell 收集 MySQL 诊断报告(上)
  • 电脑磁盘占用率高怎么办?
  • 如何理解高性能服务器的高性能、高并发?
  • Opengl ES之RGB转NV21
  • 增益自适应PI控制器+死区过滤器(Smart PLC向导PID编程应用)
  • 2023-01-16 MySQL主从复制+MyCat读写分离实现
  • 二阶段法线性规划代码分享
  • 编译原理-链接实例分析