资源简介
适合初学的人。包含两个代码,一个独立整合起来的,注释比较清楚。另一个参照深入理解OpenCV书中第三章的代码,添加读取OBJ模型的环节,没有纹理。作为刚入手的可以参考一下,并贴一个博客地址配置环境和理解代码:http://www.cnblogs.com/Alip/p/7026512.html
代码片段和文件信息
/*****************************************************************************
* Markerless AR desktop application.
******************************************************************************
* by Khvedchenia Ievgen 5th Dec 2012
* http://computer-vision-talks.com
******************************************************************************
* Ch3 of the book “Mastering OpenCV with Practical Computer Vision Projects“
* Copyright Packt Publishing 2012.
* http://www.packtpub.com/cool-projects-with-opencv/book
*****************************************************************************/
////////////////////////////////////////////////////////////////////
// File includes:
#include “ARDrawingContext.hpp“
#include
#include “glm.h“
#include “LoadFileDlg.h“
#include “trackball.h“
#include “OpenGLDemo.h“
// The current modelview matrix
double pModelViewMatrix[16];
// The OBJ model
GLMmodel* pModel = NULL;
////////////////////////////////////////////////////////////////////
// Standard includes:
#include
#include
#include
void ARDrawingContextDrawCallback(void* param)
{
ARDrawingContext * ctx = static_cast(param);
if (ctx)
{
ctx->draw();
}
}
ARDrawingContext::ARDrawingContext(std::string windowName cv::Size frameSize const CameraCalibration& c)
: m_isTextureInitialized(false)
m_calibration(c)
m_windowName(windowName)
{
// Create window with OpenGL support
cv::namedWindow(windowName cv::WINDOW_OPENGL);
// Resize it exactly to video size
cv::resizeWindow(windowName frameSize.width frameSize.height);
// Initialize OpenGL draw callback:
cv::setOpenGlContext(windowName);
cv::setOpenGlDrawCallback(windowName ARDrawingContextDrawCallback this);
}
ARDrawingContext::~ARDrawingContext()
{
cv::setOpenGlDrawCallback(m_windowName 0 0);
}
void ARDrawingContext::updateBackground(const cv::Mat& frame)
{
frame.copyTo(m_backgroundImage);
}
void ARDrawingContext::updateWindow()
{
cv::updateWindow(m_windowName); //更新窗口
}
void ARDrawingContext::draw()
{
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); // Clear entire screen:
drawCameraframe(); // Render background
drawAugmentedScene(); // Draw AR
glFlush();
}
void ARDrawingContext::drawCameraframe()
{
// Initialize texture for background image
if (!m_isTextureInitialized)
{
glGenTextures(1 &m_backgroundTextureId);
glBindTexture(GL_TEXTURE_2D m_backgroundTextureId);
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR);
m_isTextureInitialized = true;
}
int w = m_backgroundImage.cols;
int h = m_backgroundImage.rows;
glPixelStorei(GL_PACK_ALIGNMENT 1);
glBindTexture(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 494316 2012-12-29 04:28 AR_Mode\AR_Mode\3.jpg
文件 8649 2017-10-17 15:29 AR_Mode\AR_Mode\ARDrawingContext.cpp
文件 2095 2012-12-29 04:28 AR_Mode\AR_Mode\ARDrawingContext.hpp
文件 1354 2016-04-20 22:16 AR_Mode\AR_Mode\ARPipeline.cpp
文件 1267 2012-12-29 04:28 AR_Mode\AR_Mode\ARPipeline.hpp
文件 5186 2017-10-17 15:23 AR_Mode\AR_Mode\AR_Mode.vcxproj
文件 2872 2017-09-07 09:27 AR_Mode\AR_Mode\AR_Mode.vcxproj.filters
文件 165 2017-09-07 09:37 AR_Mode\AR_Mode\AR_Mode.vcxproj.user
文件 2096 2012-12-29 04:28 AR_Mode\AR_Mode\CameraCalibration.cpp
文件 1530 2012-12-29 04:28 AR_Mode\AR_Mode\CameraCalibration.hpp
文件 241949 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\ARDrawingContext.obj
文件 321764 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\ARPipeline.obj
文件 3959 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\AR_Mode.log
文件 198 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\AR_Mode.tlog\AR_Mode.lastbuildstate
文件 9122 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\AR_Mode.tlog\cl.command.1.tlog
文件 117636 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\AR_Mode.tlog\CL.read.1.tlog
文件 12316 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\AR_Mode.tlog\CL.write.1.tlog
文件 4538 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\AR_Mode.tlog\li
文件 8716 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\AR_Mode.tlog\li
文件 2244 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\AR_Mode.tlog\li
文件 205280 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\CameraCalibration.obj
文件 17529 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\GeometryTypes.obj
文件 322666 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\glm.obj
文件 30825 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\LoadFileDlg.obj
文件 647677 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\main.obj
文件 217637 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\Pattern.obj
文件 675824 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\PatternDetector.obj
文件 28530 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\trackball.obj
文件 1461248 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\vc120.idb
文件 1798144 2017-10-17 15:23 AR_Mode\AR_Mode\Debug\vc120.pdb
............此处省略37个文件信息
- 上一篇:自动绘制刀模图
- 下一篇:hq61刷机固件.rar
评论
共有 条评论