嵌入式开发之移植OpenCv可执行程序到arm平台
0. 序言
- PC操作系统:Ubuntu 16.04
- OpenCv版本:4.0
- 交叉工具链:arm-linux-gnueabihf,gcc version 5.4.0
- 目标平台:arm
- 编译时间:20181224
- 建议新手先看交叉编译的这篇文章:https://www.jianshu.com/p/0fcdce428d8f
1. 下载C++版本Eclipse
下载地址:https://www.eclipse.org/downloads/packages/ 选择Linux 64位
2. 创建C++Project
步骤1:File-New-Project..-C++Project-Next-输入Project name-Next-输入Author-Next:


步骤2:默认Debug和Release:


说明:这里看不懂的,建议先看交叉编译的文章:https://www.jianshu.com/p/0fcdce428d8f
目录结构:

3. 编写C++代码
- 把Exam.cpp的代码替换为以下代码并保存:
1 #include<opencv2/core.hpp> 2 #include<opencv2/imgcodecs.hpp> 3 #include<opencv2/imgproc.hpp> 4 using namespace cv; 5 int main(void) 6 { 7 Mat pic; 8 pic=imread("gaoyuanyuan.jpg"); 9 Mat gray; 10 cvtColor(pic,gray,COLOR_BGR2GRAY); 11 imwrite("gray.png",gray); 12 return 0; 13 }
注意:这里一定要执行保存的操作。

4. 添加头文件的路径
右击项目Exam,选择Properties并设置如图选项,然后点击Apply And Closed。

说明:
① /usr/local/arm/opencv-arm/ 是交叉编译执行make install后存放可执行文件的目录,也就是CMAKE_INSTALL_PREFIX对应的目录
② /usr/local/arm/opencv-arm/include/opencv4/ 对应Exam.cpp的代码"#include<opencv2/core.hpp>"
,因为我的opencv4的下一级目录是opencv2,opencv2里面存放的是头文件。

5. 添加库依赖
右击项目Exam,选择Properties并设置如图选项,然后点击Apply And Closed。


注意:Libraries是手写的,它会自动拼接lib和so字符找到指定的依赖。而path则是上上个图展示的存放so文件的目录的路径。
6. 添加C++11新特性
Project->Properties->C/C++ Build->Settings->GCC G++ Compiler->Miscellaneous->Other flags 将-c -fmessage-length=0 改为 -c -fmessage-length=0 -std=c++11

7. 项目Clean然后Build
Clean 是为了防止你中途没有配置完Properties就Build项目:

说明:Building file是原始我们的cpp文件,Building target指的是编译cpp文件生成的可执行文件。
8. 导出可执行文件和so文件并执行
Exam可执行文件存放在生成的Debug目录下:

so文件就是我们刚刚指定的libraries依赖的path路径下的so文件:

./Exam

作者:付凯强
链接:https://www.jianshu.com/p/f515357e1539
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异