Mastering Opencv ch3: markerless AR(一)

最近分析了下mastering OpenCV 第三章markerless AR的源码,这个例子是基于自然标志物的增强现实,在这个例子中,使用一个图片作为模板标识,这个图片应该有一定的特征,感觉像天空大海什么的,没有太多特征的图片,在这上面做增强现实,就很不好弄。
源码及编译文件下载地址:无标识的AR的OpenCV实现-Linux
好把,少扯淡,赶紧上源码分析。
我觉得能看到这个主题博客的,对于编译什么的都没问题吧,要么是VS在windows上,要么linux终端或QT上,MAC本人屌丝,没玩过,不过对于编译OpenCV来说,想来也差不多吧。
这里要注意的一点是,编译OpenCV的时候要添加支持OpenGL,因为本源码是基于OpenGL GUI窗口的,这和第二章中的使用GLUT作为显示窗口是有区别的,不过,要是不想弄OpenCV编译的话,改成GLUT显示的也不太费事,我这里并没有改,说好的源码分析,就按源码来吧。
注意:sudo apt-get install libgtkglext1 libgtkglext1-dev
要编译支持OpenGL的OpenCV,在有OpenGL的情况下,要安装这两个库。才能在cmake时配置OpenCV support。

关于人工标识和自然标识对实现增强现实的区别,请自行百度,这里只提下,自然标识的更好玩点,全是人工标识,这没法发展啊。好吧,对部分遮挡可以识别,可以做到更好的虚实融合。

Begin:
1:首先找main函数,在main函数开始,

 // Change this calibration to yours:
    CameraCalibration calibration(526.58037684199849f, 524.65577209994706f, 318.41744018680112f, 202.96659047014398f);

这里是对相机的内参数进行处理,这个调用在CameraCalibration.hpp和.cpp中进行实现,这几个参数就是在相机校正时得到的内参数矩阵中的值,关于求相机内参数的问题请查看前几篇博客,有详细的说明,这里只使用了内参数,在后面会构造内参数矩阵,作为透视变换的矩阵,失真向量全为0。

2:接下来开始检测在运行程序时,输入参数的个数,若小于2个,那退出,等于两个,这个就是摄像头实时拍摄了。

 cv::VideoCapture cap;
 if (cap.open(0))
    {
      processVideo(patternImage, calibration, cap);
    }

在proccessVideo开头添加一下,就可以得到一帧帧图像了。

    cv::Mat currentFrame;  
    capture >> currentFrame;

    // Check the capture succeeded:
    if (currentFrame.empty())
    {
        std::cout << "Cannot open video capture device" << 
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值