【OpenCV&OpenGL&Marker-based AR】方块Demo Linux版本

目录

说在前面

  • 操作系统:ubuntu 16.04
  • opencv版本:github default
  • opencv contrib版本:github default
  • glfw版本:3.3.4
  • 原理部分:【OpenCV&OpenGL&Marker-based AR】原理部分
  • 其他
    1.linux版本有个好处,就是只要有代码就行,不像windows,要拿个vs;但是也有坏处,opencv你要自己编,不像windows,可以用别人编好的库。
    2.我也尝试过在linux把opencv编译成静态库,但是放到其它机器上依旧运行不了,因为opencv静态库还是会依赖一些动态库,比如libpng之类的,真的难受。除非你把opencv依赖的库全部整成静态的。
    3.如果你的操作系统是archlinux,例如manjaro,那么装opencv将很方便。
    4.代码以及目录结构重新整理了下,这样更清晰点。

编译OpenCV

# 目录结构
#├── project
#│   ├── libcv
#│   ├── opencv
#│   └── opencv_contrib

# 创建opencv编译库目录
# 安装git
sudo apt-get install git
# 准备源码 或者使用gitee https://gitee.com/mirrors/opencv.git
git clone https://github.com/opencv/opencv.git
# https://gitee.com/mirrors/opencv_contrib.git
git clone https://github.com/opencv/opencv_contrib.git
# 编译准备
cd opencv
mkdir build && cd build
# cmake参数
cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=~/project/libcv \
-D OPENCV_EXTRA_MODULES_PATH=~/project/opencv_contrib/modules \
-D WITH_TBB=ON -D WITH_OPENMP=ON -D WITH_IPP=ON \
-D WITH_OPENGL=ON -D WITH_EIGEN=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_SHARED_LIBS=OFF ..
# 编译
make -j8
# 安装
make install

安装OpenGL

GLFW

  • 官网下载源码
  • 编译
    # 目录结构
    #├── project
    #│   ├── libglfw
    #│   ├── glfw
    
    # 下载源码
    cd glfw
    mkdir build
    cd build
    cmake -D CMAKE_INSTALL_PREFIX=~/project/libglfw ..
    make install
    

GLAD

GLM

  • glm是一个头文件库,只需要include进工程即可
  • github release

代码

  • github
  • 目录结构
    ./project
    ├── demo_cube				# demo目录 对应github代码中的Cube Demo Linux
    │   ├── bin					# camera.yml文件存放目录
    │   ├── CMakeLists.txt		# cmake文件
    │   ├── include				# 头文件目录
    │   ├── shader				# shader文件目录
    │   └── src					# 源代码目录
    ├── glfw					# glfw源代码目录
    ├── glm						# glm源代码目录
    ├── libcv					# opencv安装目录
    │   ├── bin
    │   ├── include
    │   ├── lib
    │   └── share
    ├── libglfw					# glfw安装目录
    │   ├── include
    │   └── lib
    ├── opencv					# opencv源代码
    └── opencv_contrib
    
  • 在准备好opencv以及opengl部分后,先校准相机得到相机参数文件,替换./demo_cube/bin/camera.yml
    cd demo_cube
    cmake .
    make
    ./Demo
    
  • 有问题请在评论区指出

结果

【OpenCV&OpenGL&Marker-based AR】方块Demo Linux版本










【OpenCV&OpenGL&Marker-based AR】方块Demo Linux版本

上一篇:【OpenGL进阶】01.使用Shader绘制三角形


下一篇:Qt + OpenGL实现机械臂3D显示