資源簡介
適合初學的人。包含兩個代碼,一個獨立整合起來的,注釋比較清楚。另一個參照深入理解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
評論
共有 條評論