opengl实现实时图像旋转

nobita88513 2011-10-25 10:30:25
使用opengl将摄像机采集回来的图像进行实时旋转,视见区是旋转的,可是视见区里面的图像不是随着视见区的旋转而旋转,而是随着摄像头的旋转而旋转,我的程序是先更新纹理图,再计算摄像机的旋转角度,之后再根据旋转角度贴图,这是哪的问题呢?
...全文
293 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CabinLS 2011-10-26
  • 打赏
  • 举报
回复
一、
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1024, 768, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
纹理的生成你写到绘制函数里面?

二、
glRotatef(angleZ,0.0f,0.0f,-1.0f);//绕Z轴旋转就写1.0f怎么变-1了?

三、
在使用旋转、平移、缩放时,前后得压栈,用:
glPushMatrix();
//..做旋转等操作
glPopMatrix();

太多问题了..
nobita88513 2011-10-25
  • 打赏
  • 举报
回复
在主函数中我是这么写的:
UpdateTexture();
Draw();
其中
void UpdateTexture()
{ ConvertBayer2Rgb(m_pImageBuffer,m_pRawBuffer,Width,Height,ConvertType,m_pLutR,m_pLutG,m_pLutB,true,Layout);
DrawDibDraw (hdd, hdc, 0, 0, 1024, 768, &(m_pBmpInfo->bmiHeader), m_pImageBuffer, 0, 0, Width, Height, 0);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, 1024, 768, GL_BGR_EXT, GL_UNSIGNED_BYTE, data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}
data中存放图像数据
void Draw (void)
{ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1024, 768, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
glRotatef(angleZ,0.0f,0.0f,-1.0f);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-512.0f, -384.0f, -1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 512.0f, -384.0f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 512.0f, 384.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-512.0f, 384.0f, -1.0f);
glEnd();
glFlush ();
}
调试发现视见区是旋转angleZ角度,可是里面的图像与摄像机所采集到的图像一样,并没有被纠正angleZ角度,请问这是哪的问题呢?急求高手指点

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧