From 3e0fa62ab8ff20f92ba706bb01dc9c8e350add3b Mon Sep 17 00:00:00 2001 From: NEU-lab <2942375747@qq.com> Date: Sat, 6 Jul 2024 11:20:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?add:=E4=B8=89=E6=96=B9=E5=BA=93draco?= =?UTF-8?q?=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: NEU-lab <2942375747@qq.com> --- thirdparty/draco/HPKBUILD | 61 ++++++++++++++ thirdparty/draco/HPKCHECK | 34 ++++++++ thirdparty/draco/OAT.xml | 16 ++++ thirdparty/draco/README.OpenSource | 11 +++ thirdparty/draco/README_zh.md | 10 +++ thirdparty/draco/SHA512SUM | 1 + thirdparty/draco/docs/hap_integrate.md | 79 ++++++++++++++++++ .../draco/docs/pic/draco_install_dir.png | Bin 0 -> 18778 bytes thirdparty/draco/docs/pic/draco_test.png | Bin 0 -> 28468 bytes thirdparty/draco/docs/pic/draco_usage.png | Bin 0 -> 22633 bytes 10 files changed, 212 insertions(+) create mode 100644 thirdparty/draco/HPKBUILD create mode 100644 thirdparty/draco/HPKCHECK create mode 100644 thirdparty/draco/OAT.xml create mode 100644 thirdparty/draco/README.OpenSource create mode 100644 thirdparty/draco/README_zh.md create mode 100644 thirdparty/draco/SHA512SUM create mode 100644 thirdparty/draco/docs/hap_integrate.md create mode 100644 thirdparty/draco/docs/pic/draco_install_dir.png create mode 100644 thirdparty/draco/docs/pic/draco_test.png create mode 100644 thirdparty/draco/docs/pic/draco_usage.png diff --git a/thirdparty/draco/HPKBUILD b/thirdparty/draco/HPKBUILD new file mode 100644 index 00000000..652f25ce --- /dev/null +++ b/thirdparty/draco/HPKBUILD @@ -0,0 +1,61 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Contributor: wangjialun <2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangyihao<2942375747@qq.com> , wangying +# Maintainer: wangyihao<2942375747@qq.com> + +pkgname=draco +pkgver=1.5.4 +pkgrel=0 +pkgdesc="Draco is a library for compressing and decompressing 3D geometric meshes and point clouds." +url="https://github.com/google/draco/tree/1.5.4" +archs=("armeabi-v7a" "arm64-v8a") +license=("Apache-2.0 license") +depends=() +makedepends=() +source="https://github.com/google/$pkgname/archive/refs/tags/$pkgver.zip" + +downloadpackage=true +autounpack=true +buildtools="cmake" + +builddir=$pkgname-${pkgver} +packagename=$builddir.zip + +prepare() { + mkdir -p $builddir/$ARCH-build +} + +build() { + cd $builddir + ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DCMAKE_C_FLAGS="-Wno-unused-command-line-argument" \ + -DCMAKE_CXX_FLAGS="-Wno-unused-command-line-argument" -B$ARCH-build -S./ > $buildlog 2>&1 + $MAKE VERBOSE=1 -C $ARCH-build >> $buildlog 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir + $MAKE -C $ARCH-build install >> $buildlog 2>&1 + cd $OLDPWD +} + +check() { + echo "The test must be on an OpenHarmony device!" +} + +cleanbuild() { + rm -rf ${PWD}/$builddir +} \ No newline at end of file diff --git a/thirdparty/draco/HPKCHECK b/thirdparty/draco/HPKCHECK new file mode 100644 index 00000000..50589874 --- /dev/null +++ b/thirdparty/draco/HPKCHECK @@ -0,0 +1,34 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Contributor: wangjialun <2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangyihao<2942375747@qq.com> , wangying +# Maintainer: wangyihao<2942375747@qq.com> + +source HPKBUILD > /dev/null 2>&1 # 导入HPKBUILD文件 +logfile=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/${pkgname}_${ARCH}_${OHOS_SDK_VER}_test.log + +# 测试前的准备, 如果不需要可以不写。 +checkprepare(){ + return 0 +} + +# 在OH环境执行测试的接口 +openharmonycheck() { + res=0 + cd ${builddir}/${ARCH}-build + ctest > ${logfile} 2>&1 + res=$? + cd $OLDPWD + + return $res +} \ No newline at end of file diff --git a/thirdparty/draco/OAT.xml b/thirdparty/draco/OAT.xml new file mode 100644 index 00000000..eeb1f946 --- /dev/null +++ b/thirdparty/draco/OAT.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/thirdparty/draco/README.OpenSource b/thirdparty/draco/README.OpenSource new file mode 100644 index 00000000..9d8260e2 --- /dev/null +++ b/thirdparty/draco/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "draco", + "License": "Apache-2.0 license", + "License File": "https://github.com/google/draco/blob/main/LICENSE", + "Version Number": "v1.5.4", + "Owner": "huangminzhong2@huawei.com", + "Upstream URL": "https://github.com/google/draco", + "Description": "Draco is a library for compressing and decompressing 3D geometric meshes and point clouds." + } +] \ No newline at end of file diff --git a/thirdparty/draco/README_zh.md b/thirdparty/draco/README_zh.md new file mode 100644 index 00000000..85490222 --- /dev/null +++ b/thirdparty/draco/README_zh.md @@ -0,0 +1,10 @@ +# draco三方库说明 +## 功能简介 +draco用于改善3D图形的存储和传输。 +## 使用约束 +- IDE版本:DevEco Studio 3.1.0.501 +- SDK版本:ohos_sdk_public 4.1.3.5 +- 三方库版本:v1.5.4 + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/draco/SHA512SUM b/thirdparty/draco/SHA512SUM new file mode 100644 index 00000000..b2429ecf --- /dev/null +++ b/thirdparty/draco/SHA512SUM @@ -0,0 +1 @@ +2b98c51e29f144d7b29192b315dcc38f99bb4f518bd6323f001c195c8acc8645f6662d1519e26833c2aee6ea2414dcffa700078bcac4437c1d6535ceb24850f9 draco-1.5.4.tar.gz diff --git a/thirdparty/draco/docs/hap_integrate.md b/thirdparty/draco/docs/hap_integrate.md new file mode 100644 index 00000000..d2a23069 --- /dev/null +++ b/thirdparty/draco/docs/hap_integrate.md @@ -0,0 +1,79 @@ +# draco 集成到应用hap + +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 + +## 开发环境 + +- [开发环境准备](../../../docs/hap_integrate_environment.md) + +## 编译三方库 + +- 下载本仓库 + + ```shell + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +- 三方库目录结构 + + ```shell + tpc_c_cplusplus/thirdparty/draco #三方库draco的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── HPKCHECK #测试脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md #三方库简介 + ``` + +- 在lycium目录下编译三方库 + + 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#1编译环境准备) + + ```shell + cd lycium + ./build.sh draco + ``` + +- 三方库头文件及生成的库 + + 在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ```shell + draco/arm64-v8a draco/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +- 编译出可执行的文件进行测试,[准备三方库测试环境](../../../lycium/README.md#3ci环境准备) +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件拷贝到该目录下,将编译生成的三方库以及依赖库全部(动态库名字带版本号和不带版本号的都需要)拷贝到工程的libs目录下,如下图所示: +   + +  ![thirdparty_install_dir](pic/draco_install_dir.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + + ```shell + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/draco/${OHOS_ARCH}/lib/libdraco.a) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/draco/${OHOS_ARCH}/include) + ``` + +## 测试三方库 +在lycium目录下执行脚本./test.sh,自动运行thridparty目录下已编译的三方库, + + +```shell + cd lycium + ./test.sh draco +``` + ![draco_test](pic/draco_test.png) + +## 参考资料 + +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) \ No newline at end of file diff --git a/thirdparty/draco/docs/pic/draco_install_dir.png b/thirdparty/draco/docs/pic/draco_install_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..6d25a354cb91fd702c3f273217f05393c67dd294 GIT binary patch literal 18778 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%0ASo67| zb+CW)*NaND!J%X%boBnxnT9AsC`+j+<|B+>y}tU7+YO-_0zIQ(E1kRNhQm1V zM**fmL?AJ>7Wo$`w7(N=rx0m~xeL1kU7>Z`As9ELMb0d;WX(>IA{#Q{u^DLE*LRBg@6e>bfjK_P*Kwdx{pqaG$SejulT$>8?33kq-SDxd z+dtrPh9%2N|C_2`blS?x&Fh{~-JFlI=lH^#h>H`|U?BfNvvgsYem`;eM1j2uN{VxIg-v$G`I4!pl^U!PE3j??}I}5`9VS^QJ?uxggAAf?( z*l+gqKjtXCp1Ay>w>5@&GR}G*`IsH+CxINd0*K z8@^$cmr;nvS1&Cj_sCta<^?3+rw=5dh?=D3;k@A_y-Ku*d<&48$(I9t-{oqfPQW0h zkpRNplZ>>16K=eqFU0~hYauXe2RFFK*0hgLB_1W-NF&8b2JEaU91+C)LN|zh_P}@_ zJHXABKs$AK01VCX@8x_9U@ED`z&xZez+L|A?Pp)+-&!*=3iRU>*MdWX9?3gQr?ZCu K7z5|=*na`uKF1ya literal 0 HcmV?d00001 diff --git a/thirdparty/draco/docs/pic/draco_usage.png b/thirdparty/draco/docs/pic/draco_usage.png new file mode 100644 index 0000000000000000000000000000000000000000..fd3996013c6fdf392fe6d3cb18d498b482c75ed0 GIT binary patch literal 22633 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 Date: Mon, 8 Jul 2024 17:52:23 +0800 Subject: [PATCH 2/2] =?UTF-8?q?add:=E6=96=B0=E5=A2=9E=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E5=BA=93flann?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: NEU-lab <2942375747@qq.com> --- thirdparty/flann/HPKBUILD | 63 ++++++++++++++ thirdparty/flann/HPKCHECK | 34 ++++++++ thirdparty/flann/OAT.xml | 16 ++++ thirdparty/flann/README.OpenSource | 11 +++ thirdparty/flann/README_zh.md | 10 +++ thirdparty/flann/SHA512SUM | 1 + thirdparty/flann/docs/hap_integrate.md | 79 ++++++++++++++++++ .../flann/docs/pic/flann_install_dir.png | Bin 0 -> 18449 bytes thirdparty/flann/docs/pic/flann_test.png | Bin 0 -> 14789 bytes thirdparty/flann/docs/pic/flann_usage.png | Bin 0 -> 23490 bytes 10 files changed, 214 insertions(+) create mode 100644 thirdparty/flann/HPKBUILD create mode 100644 thirdparty/flann/HPKCHECK create mode 100644 thirdparty/flann/OAT.xml create mode 100644 thirdparty/flann/README.OpenSource create mode 100644 thirdparty/flann/README_zh.md create mode 100644 thirdparty/flann/SHA512SUM create mode 100644 thirdparty/flann/docs/hap_integrate.md create mode 100644 thirdparty/flann/docs/pic/flann_install_dir.png create mode 100644 thirdparty/flann/docs/pic/flann_test.png create mode 100644 thirdparty/flann/docs/pic/flann_usage.png diff --git a/thirdparty/flann/HPKBUILD b/thirdparty/flann/HPKBUILD new file mode 100644 index 00000000..471ff553 --- /dev/null +++ b/thirdparty/flann/HPKBUILD @@ -0,0 +1,63 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Contributor: wangjialun <2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangyihao<2942375747@qq.com> , wangying +# Maintainer: wangyihao<2942375747@qq.com> + +pkgname=flann +pkgver=1.8.4 +pkgrel=0 +pkgdesc="Flann is a library for performing fast approximate nearest neighbor searches in high dimensional spaces. It contains a collection of algorithms we found to work best for nearest neighbor search and a system for automatically choosing the best algorithm and optimum parameters depending on the dataset. " +url="https://github.com/flann-lib/flann/tree/1.8.4" +archs=("armeabi-v7a" "arm64-v8a") +license=("BSD") +depends=() +makedepends=() +source="https://github.com/flann-lib/$pkgname/archive/refs/tags/$pkgver.zip" + +downloadpackage=true +autounpack=true +buildtools="cmake" + +builddir=$pkgname-${pkgver} +packagename=$builddir.zip + +prepare() { + mkdir -p $builddir/$ARCH-build +} + +build() { + cd $builddir + ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DCMAKE_C_FLAGS="-Wno-unused-command-line-argument" \ + -DCMAKE_CXX_FLAGS="-Wno-unused-command-line-argument" -B$ARCH-build -S./ > $buildlog 2>&1 + $MAKE VERBOSE=1 -C $ARCH-build >> $buildlog 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir + $MAKE -C $ARCH-build install >> $buildlog 2>&1 + cd $OLDPWD +} + + +check() { + echo "The test must be on an OpenHarmony device!" +} + + +cleanbuild() { + rm -rf ${PWD}/$builddir +} \ No newline at end of file diff --git a/thirdparty/flann/HPKCHECK b/thirdparty/flann/HPKCHECK new file mode 100644 index 00000000..50589874 --- /dev/null +++ b/thirdparty/flann/HPKCHECK @@ -0,0 +1,34 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Contributor: wangjialun <2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangyihao<2942375747@qq.com> , wangying +# Maintainer: wangyihao<2942375747@qq.com> + +source HPKBUILD > /dev/null 2>&1 # 导入HPKBUILD文件 +logfile=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/${pkgname}_${ARCH}_${OHOS_SDK_VER}_test.log + +# 测试前的准备, 如果不需要可以不写。 +checkprepare(){ + return 0 +} + +# 在OH环境执行测试的接口 +openharmonycheck() { + res=0 + cd ${builddir}/${ARCH}-build + ctest > ${logfile} 2>&1 + res=$? + cd $OLDPWD + + return $res +} \ No newline at end of file diff --git a/thirdparty/flann/OAT.xml b/thirdparty/flann/OAT.xml new file mode 100644 index 00000000..eeb1f946 --- /dev/null +++ b/thirdparty/flann/OAT.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/thirdparty/flann/README.OpenSource b/thirdparty/flann/README.OpenSource new file mode 100644 index 00000000..da5345f0 --- /dev/null +++ b/thirdparty/flann/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "flann", + "License": "BSD", + "License File": "https://github.com/flann-lib/flann/blob/master/COPYING", + "Version Number": "v1.8.4", + "Owner": "2942375747@qq.com", + "Upstream URL": "https://github.com/flann-lib/flann", + "Description": "Flann is a library for performing fast approximate nearest neighbor searches in high dimensional spaces. " + } +] \ No newline at end of file diff --git a/thirdparty/flann/README_zh.md b/thirdparty/flann/README_zh.md new file mode 100644 index 00000000..c6f73fc9 --- /dev/null +++ b/thirdparty/flann/README_zh.md @@ -0,0 +1,10 @@ +# draco三方库说明 +## 功能简介 +flann是一个用于在高维空间中执行快速近似最近邻搜索的库。 +## 使用约束 +- IDE版本:DevEco Studio 3.1.0.501 +- SDK版本:ohos_sdk_public 4.1.3.5 +- 三方库版本:v1.8.4 + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/flann/SHA512SUM b/thirdparty/flann/SHA512SUM new file mode 100644 index 00000000..86aadf07 --- /dev/null +++ b/thirdparty/flann/SHA512SUM @@ -0,0 +1 @@ +ec11dbdd6b7b2c7a1cd71dc7c1099265ddc0b00ad0bb8aed1492999f1851cf9d7d991dbc47e4b963b834e592b4e4a7f25466b4302b4371c0c0632e3168f24ded flann-1.8.4.tar.gz diff --git a/thirdparty/flann/docs/hap_integrate.md b/thirdparty/flann/docs/hap_integrate.md new file mode 100644 index 00000000..dcaa3391 --- /dev/null +++ b/thirdparty/flann/docs/hap_integrate.md @@ -0,0 +1,79 @@ +# flann 集成到应用hap + +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 + +## 开发环境 + +- [开发环境准备](../../../docs/hap_integrate_environment.md) + +## 编译三方库 + +- 下载本仓库 + + ```shell + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +- 三方库目录结构 + + ```shell + tpc_c_cplusplus/thirdparty/flann #三方库flann的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── HPKCHECK #测试脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md #三方库简介 + ``` + +- 在lycium目录下编译三方库 + + 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#1编译环境准备) + + ```shell + cd lycium + ./build.sh flann + ``` + +- 三方库头文件及生成的库 + + 在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ```shell + flann/arm64-v8a flann/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +- 编译出可执行的文件进行测试,[准备三方库测试环境](../../../lycium/README.md#3ci环境准备) +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件拷贝到该目录下,将编译生成的三方库以及依赖库全部(动态库名字带版本号和不带版本号的都需要)拷贝到工程的libs目录下,如下图所示: +   + +  ![thirdparty_install_dir](pic/flann_install_dir.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + + ```shell + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/flann/${OHOS_ARCH}/lib/libflann.so.1.8.4) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/flann/${OHOS_ARCH}/include) + ``` + +## 测试三方库 +在lycium目录下执行脚本./test.sh,自动运行thridparty目录下已编译的三方库, + + +```shell + cd lycium + ./test.sh flann +``` + ![flann_test](pic/flann_test.png) + +## 参考资料 + +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) \ No newline at end of file diff --git a/thirdparty/flann/docs/pic/flann_install_dir.png b/thirdparty/flann/docs/pic/flann_install_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..40d24677ec471c9b5e82d1b47755c730ca83bd95 GIT binary patch literal 18449 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 literal 0 HcmV?d00001 diff --git a/thirdparty/flann/docs/pic/flann_test.png b/thirdparty/flann/docs/pic/flann_test.png new file mode 100644 index 0000000000000000000000000000000000000000..1f7b7bbec2734d102a6efcf723a2e9193d89afea GIT binary patch literal 14789 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 literal 0 HcmV?d00001 diff --git a/thirdparty/flann/docs/pic/flann_usage.png b/thirdparty/flann/docs/pic/flann_usage.png new file mode 100644 index 0000000000000000000000000000000000000000..3ded28246a67358b4e15078fbcfd2ea105e98637 GIT binary patch literal 23490 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 literal 0 HcmV?d00001 -- Gitee