//Description: 记录用过的第三方库函数,特别是三维重建相关的
//Create Date: 2023-02-25 18:04:19
//Author: channy
CMake 在查找其它库时在目标目录下的cmake中寻找查找信息。
路径信息通过各个库的.cmake文件说明中查找。如OpenCV在OpenCVConfig.cmake中设置了OpenCV_INCLUDE_DIRS变量,osg在OpenSceneGraphConfig.cmake中设置了OSG_INCLUDE_DIR等。
cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -DCMAKE_C_COMPILER=D:/Qt/Qt5.14.2/Tools/mingw730_64/bin/gcc.exe -DCMAKE_CXX_COMPILER=D:/Qt/Qt5.14.2/Tools/mingw730_64/bin/c++.exe -DCMAKE_MAKE_PROGRAM=D:/Qt/Qt5.14.2/Tools/mingw730_64/bin/mingw32-make.exe ../cmake
cmake使用mingw编译
图像序列重建基本流程
稠密重建需要gpu
地理信息库
支持多种格式模型,不支持obj中同一顶点不同uv
加载obj文件用。只有头文件,只能单次include,适用于小型项目。
视觉几何处理库。经典算法,效果一般。
几何模型库。只包含头文件可用。经典算法,效果一般。模板多,移植不易。
点云库。
meshlab中使用vcg求解点云法向量,比CGAL效果好。
只头文件。几何视觉库。依赖Eigen,使用glfw可视化。
物理碰撞库。
纹理扩展库。
只头文件。矩阵运算库。
非线性优化问题
高效无损压缩算法
快速邻近搜索包
线性规划
整数非线性规划求解器
音视频库
只头文件。枚举类型和string的相互转化,c++17以上
结构化数据格式
渲染显示,封装了opengl
OpenSceneGraph -> install -> set System Path OSG_DIR -> use find_package(OpenSceneGraph)
只有OpenSceneGraph_INCLUDE_DIRS
glfw的glfw3Config.cmake文件指向glfw3Targets.cmake文件,而该文件里面并没有设置类似于GLFW3_INCLUDE_DIR之类的变量。故加了路径之后cmake能够find_package成功但路径为空。
修改glfw3Targets.cmake文件增加路径设置
set(GLFW3_INCLUDE_DIR "${_IMPORT_PREFIX}/include")
set(GLFW3_LIBRARY_DIR "${_IMPORT_PREFIX}/lib")
-> set System Path GLFW3_DIR -> use find_package(GLFW3)
数据表存储
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS += -Wall
LOCAL_CFLAGS += -O3 -fPIC -std=c++17
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include/eigen-3.4.0
LOCAL_C_INCLUDES += ${LOCAL_PATH}/include/magic_enum-master/include
LOCAL_SRC_FILES := \
$(subst $(LOCAL_PATH)/,, \
$(wildcard $(LOCAL_PATH)/src/*.cpp))
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
LOCAL_CPP_FEATURES += exceptions
LOCAL_LDLIBS := -L$(LOCAL_PATH)/libs
LOCAL_MODULE := IntentionDetection
# The ARMv7 is significanly faster due to the use of the hardware FPU
#APP_ABI := armeabi
APP_ABI := armeabi-v7a
APP_STL := c++_static
APP_PLATFORM := android-16
error: cannot initialize a parameter of type 'JNIEnv **' (aka '_JNIEnv **') with an rvalue of type 'void **'
if ((g_VM)->AttachCurrentThread((void**)&env, NULL) != 0) {
windows 需要(void**)
转型,linux不需要。