未经博主允许,不得转载,谢谢理解

如何用相机自己完成无标识AR的实践,初试者可以参考这本经典教材《Mastering OpenCV》,国内译版译得有点像谷歌翻译,不推荐,推荐大家直接读原文了解作者实践的思路,也可以参考我的博客--《Mastering OpenCV》--3.Markless AR.无标识式AR (1)和《Mastering OpenCV》--3.Markless AR.无标识式AR (2)结合中英文版本和自己的理解给出的一些实践流程和细节,如有不妥,欢迎讨论指正。

对于源码的实践,我在编译时也觉得一系列的编译问题真的很头疼,还好最后都解决了。毕竟作者出版这本书太久了,如果不想自己修改源码实现编译的话,真的就要花一些功夫。这里给出我在ubuntu下成功编译的源码,以及应用程序。有部分修改,注意的是,标定参数为我自己的相机标定后的参数,在main函数中的calibration需要修改成您自己的相机参数。

下载地址:https://download.csdn.net/download/jucilan3330/10647771


环境:ubuntu 14.04 OpenCV-2.4.3 OpenGL-3.0 

下面开始源码编译pipeline

1.opencv版本问题

首先编译一直出错,原因就是ORB和FREAK在opencv3.1下根本不能按照他定义的函数变量去定义函数,ORB都是virtual的,FREAK是根本找不到。有博客说只能在opencv-2.4.2到2.4.5这几个版本之间运行,源码下载在github上可以找到。见https://github.com/opencv/opencv/tree/2.4.2 or https://github.com/opencv/opencv/tree/2.4.3。 书中作者用的是2.4.2。

2.cmake安装

首先下载cmake-gui(我个人觉得用gui比较直观)

  • 安装
sudo apt-get install cmake-qt-gui
  • 打开:
cmake-gui

3.opengl+opencv编译问题

因为opencv编译,默认是不支持opengl的,所以你必须下源码重新编译。

如何在cmake编译opencv中将opengl支持加入,参考https://blog.csdn.net/Simple_Xiao/article/details/53978608的 “二、开始重编译“部分

  1. 在源码下新建build文件夹。
  2. 按下图输入cmake配置
  3. 依据上文参考网址完成generate

4.opencv编译

为了与之前安装的其他版本opencv不冲突,进入源码的build目录下

输入以下指令。

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/open-2.4.3 ..makesudo make install

至此 opencv2.4.3 with OPENGL就已经完成了

5.编译代码中的使用

请在CMakeLists.txt里添加如下指令:

重点在于 SET OpenCV_DIR . 

对于不同的项目 也可以通过修改这一行命令 set(OpenCV_DIR "/usr/local/opencv-可选择你要指定的opencv版本所在文件夹/share/OpenCV" )

cmake_minimum_required(VERSION 2.8)
project(xxx)#OpenCVfind_package(OpenCV 2.4.3 REQUIRED)
include_directories( ${OpenCV_INCLUDE_DIRS} )target_link_libraries( joinmap ${OpenCV_LIBS} )install(TARGETS xxx RUNTIME DESTINATION bin)

6.其他opengl编译问题

我装的是opengl3.0版本,首先main函数和ARDrawingContext函数,要修改

#include <gl/gl.h>
#...
#...// !!!
//修改成下面
#include <GL/glu.h>
#include <GL/glut.h>
#include <GL/gl.h>

程序编译时遇到错误:

/usr/bin/ld: CMakeFiles/ar_demo.dir/ARDrawingContext.cpp.o: undefined reference to symbol 'glScalef'
//usr/lib/x86_64-linux-gnu/mesa/libGL.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

主要还是CMakeLists.txt没能找到OpenGL的头文件或者是没能正确链接,修改CMakeList.txt即可,具体修改可以下载源码查看。

源码实践指南!Mastering opencv Ch3 Markerless AR--UBUNTU下 opencv+opengl 运行相关推荐

  1. 从零搭建一套结构光3D重建系统[理论+源码+实践]

    01 背景介绍 图1 典型3D结构光系统 尽管结构光作为一种已经相当成熟,并且广泛应用的三维重建技术,不同于深度学习,依旧缺乏相关的课程,网上的开源资料寥寥无几,即使有,也是晦涩难懂,许多刚入门的研究 ...

  2. java经典源码 阅读_公开!阿里甩出“源码阅读指南”,原来源码才是最经典的学习范例...

    我们为啥要阅读源码? 为什么面试要问源码?为什么我们Java程序员要去看源码?相信大多数程序员看到源码第一感觉都是:枯燥无味,费力不讨好!要不是为了"涨薪"我才不去看这个鬼东西!但 ...

  3. Android高版本P/Q/R源码编译指南

           Android高版本P/Q/R源码编译指南 Android源码编译系列博客: Android.bp你真的了解吗 Android.bp入门指南之Android.mk转换成Android.b ...

  4. Android 9(P)之init进程启动源码分析指南之一

         Android 9 之init进程启动源码分析指南之一 Android 9 (P) 系统启动及进程创建源码分析目录: Android 9 (P)之init进程启动源码分析指南之一 Andro ...

  5. Android 9 (P)之init进程启动源码分析指南之三

          Android 9 (P)之init进程启动源码分析指南之三 Android 9 (P)系统启动及进程创建源码分析目录: Android 9 (P)之init进程启动源码分析指南之一 An ...

  6. vue 2.0响应式源码实践,麻麻,我再也不怕被面试官提问啦

    vue2.0/vue3.0响应式源码实践,麻麻,我再也不怕被面试官提问啦 写在前面 vue2.0响应式源码实现 1. 先创建一个对象 2.实现observer方法 3.接下来我们对observer函数 ...

  7. vue3.0响应式源码实践,vue3.0初体验

    vue3.0响应式源码实践,vue3.0初体验 镇楼图--杀生丸.jpg vue-next(vue3.0预体验) 1. 使用: 2.vue-next的目录结构 3. reactive内部实现 作者上篇 ...

  8. Android 9 (P) Zygote进程启动源码分析指南二

         Android 9 Zygote进程启动源码分析指南二 Android 9 (P) 系统启动及进程创建源码分析目录: Android 9 (P)之init进程启动源码分析指南之一 Andro ...

  9. # React源码解析之fiber的初次渲染与更新(下)

    React源码解析之fiber的初次渲染与更新(下) 经历一个月的学习整理,站在前人的肩膀上,对React有了一些浅薄的理解,希望记录自己的学习过程的同时也可以给大家带来一点小帮助.如果此系列文章对您 ...

  10. 【深度挖掘 RocketMQ底层源码】「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行核心的流程(Pull模式-下)

    承接[[深度挖掘 RocketMQ底层源码]「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行核心的流程(Pull模式-上)] pullBlockIfNotFound方法 通过该方法获取 ...

最新文章

  1. POJ 2480 (约数+欧拉函数)
  2. 如何解决“HttpException (0x80004005): 超过了最大请求长度”问题
  3. Xamarin效果第五篇之ScrollView动态滚动效果
  4. 牛客网【每日一题】5月22日 [CQOI2009]中位数图
  5. NOIP2017年11月9日赛前模拟
  6. Java泛型中extends和super的理解(转)
  7. 一起来玩树莓派--解决树莓派启动时屏幕不亮的问题
  8. Set Mismatch leetcode 645
  9. 计算机图形学_GAMES101-现代计算机图形学课程 全笔记
  10. pycharm 修改darcual(暗黑)主题滚动条颜色
  11. LabVIEW编程运动控制PID入门
  12. 17. Zigbee应用程序框架开发指南 - 使用Ember AppBuilder设计应用程序
  13. MATLAB超定方程解法
  14. Eckart-Young-Mirsky theorem
  15. 老外最常说的二十句钻石级英语
  16. 用 python 实现简单AI 双人日麻(文字版)之三 加入COM出牌
  17. ALSA框架学习笔记3:声卡注册流程(代码解析)
  18. 给自己留下伏笔--免费软件生存之道
  19. 笔记本使用vmware
  20. 哈工大计算机网络WEEK1-2学习总结

热门文章

  1. 获得bat的运行目录
  2. WIN7下建行捷德U盾支付
  3. 算法设计与分析——顺序统计量:最大值与最小值
  4. Web前端学习笔记(十四)---加载动画(旋转方块)
  5. 统计学考研笔记:正态分布概率计算题
  6. 帝国军师--约森·梅尔沃德(微软技术总监)
  7. php mysql日程管理_9.3 日程表数据库设计
  8. 我国CN域名一年减少600万个 全要求实名注册
  9. 苹果真伪查询_二手MacBook Pro Air等苹果笔记本验货 鉴定 基本方法 流程
  10. linux安装网卡驱动make报错,linux 安装网卡驱动详解