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

这篇博客介绍了在Ubuntu 14.04环境下,针对OpenCV 2.4.3和OpenGL 3.0,如何解决编译过程中遇到的问题,包括opencv版本、cmake安装、opengl+opencv编译、源码修改等步骤,并提供了源码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

下载地址:https://download.youkuaiyun.com/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.youkuaiyun.com/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 ..

make

sudo 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)


#OpenCV

find_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即可,具体修改可以下载源码查看。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值