Skip to content

编译手册 v1.1.0

taotianran edited this page Feb 7, 2023 · 8 revisions

目录



大家可以在本机编译,我们也提供了部分平台的docker环境,也可以下载docker镜像进行编译:Docker安装(可选)

Android编译

🖥️ 本地编译

# 步骤1:克隆代码
git clone [email protected]:PaddlePaddle/FlyCV.git
git checkout <branch name or tag name>
  
# 步骤2:设置NDK路径
export ANDROID_NDK=${NDK_PATH}
例如:export ANDROID_NDK=/Users/flycv/Library/Android/sdk/ndk/17.2.4988734/

# 步骤3:编译
cd FlyCV

// 脚本参数说明
// 0:编译armv7架构;1:编译armv8架构;2:同时编译两种架构
// y:编译时清除上一次编译缓存(全量编译);n:编译时不清除上一次编译缓存(增量编译)
./scripts/android/build.sh 2 y

默认编译产出位于build/install/flycv目录下。

🐳 使用docker编译

# 拉取docker镜像
docker pull flycv/x86_64:android

# 建立交互终端(宿主机执行)
docker run --name=flycv_android -i -t -v `pwd`:/io flycv/x86_64:android /bin/bash

# 拷贝flycv至容器(宿主机执行)
docker cp ./flycv  flycv_android:/root

# 激活环境变量(容器内执行)
source /etc/ndk/r17c.env

# 执行编译(容器内执行)
cd /root/flycv/
./scripts/android/build.sh

# 编译产物拷贝至本地(宿主机执行)
docker cp flycv_android:/root/flycv/install/ ./

ArmLinux编译

🖥️ 本地编译

# 克隆代码
git clone [email protected]:PaddlePaddle/FlyCV.git
git checkout <branch name or tag name>

# 编译
cd FlyCV
./scripts/armlinux/build.sh

Macos(x86 & arm)编译

🖥️ 本地编译

# 克隆代码
git clone [email protected]:PaddlePaddle/FlyCV.git
git checkout <branch name or tag name>

# 编译
# 如果你的机器是X86架构,执行下面的编译脚本
cd FlyCV
./scripts/macos/build_x86.sh
  
# 如果你的机器是arm架构,执行下面的编译脚本
./scripts/macos/build_arm.sh

Windows编译

🖥️ 本地编译

# 步骤1:克隆代码
git clone [email protected]:PaddlePaddle/FlyCV.git
git checkout <branch name or tag name>  

# 步骤2:生成solution
// 在build目录下会生成project32和project64两个sln方案,使用visual studio进行编译
./scripts/windows/build.sh
  
# 步骤3:使用Visual Studio打开解决方案,编译INSTALL即可。

默认编译产出位于Release/flycv目录下。


Linux编译

🖥️ 本地编译

# 克隆代码
git clone [email protected]:PaddlePaddle/FlyCV.git
git checkout <branch name or tag name>  
  
# 编译
./scripts/linux/build.sh

各平台编译选项

命名空间编译选项

编译选项 默认值 描述
📃 FLYCV_NAMESPACE flycv 可以自定义命名空间,在cmake编译选项里加上 -DFLYCV_NAMESPACE=xxx 即可

功能编译选项

编译选项 默认值 描述
🗂️ BUILD_FCV_CORE ON 核心模块不可设置关闭
🗂️ BUILD_FCV_IMG_TRANSFORM ON 图像转换模块
📃 WITH_FCV_COLOR_CONVERT ON 颜色空间转换功能
📃 WITH_FCV_RESIZE ON 图像缩放
📃 WITH_FCV_WARP_AFFINE ON 仿射变换
📃 WITH_FCV_WARP_PERSPECTIVE ON 透视变换
📃 WITH_FCV_ROTATION ON 图像旋转
📃 WITH_FCV_FLIP ON 图像翻转
📃 WITH_FCV_SUBTRACT ON 图像相减
📃 WITH_FCV_COPY_MAKE_BORDER ON 边界填充
📃 WITH_FCV_CROP ON 抠图
📃 WITH_FCV_REMAP ON 重映射
📃 WITH_FCV_ADD_WEIGHTED ON 图像融合
📃 WITH_FCV_EXTRACT_CHANNEL ON 特定通道提取
🗂️ BUILD_FCV_IMG_CALCULATION ON 图像计算模块
📃 WITH_FCV_MATRIX_MUL ON 矩阵乘
📃 WITH_FCV_NORM ON 范数计算
📃 WITH_FCV_MEAN ON 均值计算
📃 WITH_FCV_MIN_AREA_RECT ON 最小外接矩形
📃 WITH_FCV_MIN_MAX_LOC ON 获取最小、最大点坐标
📃 WITH_FCV_CONNECTED_COMPONENTS ON 计算连通域
📃 WITH_FCV_FIND_HOMOGRAPHY ON 计算二维点对映射
🗂️ BUILD_FCV_FUSION_API ON 融合算子模块
📃 WITH_FCV_BGR_TO_RGBA_WITH_MASK ON bgr合并mask转rgba
📃 WITH_FCV_NORMALIZE_TO_SUBMEAN_TO_REORDER ON 图像减均值,归一化,通道顺序变换
📃 WITH_FCV_SPLIT_TO_MEMCPY ON 通道分离和拷贝
📃 WITH_FCV_Y420SP_TO_RESIZE_TO_BGR ON yuv数据缩放且转换为BGR数据
📃 WITH_FCV_BGRA_TO_RESIZE_TO_BGR ON bgra缩放和转换位bgr
🗂️ BUILD_FCV_MATH_OPERATOR ON 基本数学运算
📃 WITH_FCV_VECTOR_OPERATOR ON 向量计算
🗂️ BUILD_FCV_MEDIA_IO ON 多媒体IO操作
📃 WITH_FCV_IMGCODECS ON 图像编解码
📃 WITH_LIB_JPEG_TURBO ON 支持jpg
📃 WITH_LIB_PNG ON 支持png
🗂️ BUILD_FCV_IMG_DRAW ON 图形绘制
📃 WITH_FCV_FILL_POLY ON 多边形绘制和填充
📃 WITH_FCV_POLY_LINES ON 多边形绘制
📃 WITH_FCV_CIRCLE ON 圆形绘制
📃 WITH_FCV_LINE ON 线绘制

CPU优化编译选项

编译选项 默认值 描述
🚀 ENABLE_SSE ON 开启SSE指令集优化(仅支持x86架构)
🚀 ENABLE_AVX ON 开启AVX指令集优化(仅支持x86架构)
🚀 ANDROID_ARM_NEON ON 开启neon指令集优化(仅支持arm架构)
🚀 ENABLE_NEON ON 开启neon指令集优化(仅支持arm架构)
🚀 ENABLE_SVE2 OFF 开启SVE2指令集优化(仅支持arm架构)

多语言编译选项

编译选项 默认值 描述
BUILD_C OFF 开启C接口支持

其他编译选项

编译选项 默认值 描述
🔖 BUILD_TEST ON 开启单元测试编译
🔖 BUILD_BENCHMARK ON 开启性能测试编译
🔖 BUILD_SAMPLES ON 开启demo编译