OpenGL 纹理反转

2024-02-05

我正在尝试将网络摄像头的输入映射到 OpenGL 中的平面。我正在使用 OpenCV 从网络摄像头获取图像。

我遇到的问题是纹理是垂直反转的,如果我的纹理是“v”,则当前结果是“^”。

我想将从网络摄像头拍摄的图像调整到我的飞机上 (2x2)。它的左下角是-1、-1,右上角是1,1。

代码是:

const int VIEWPORT_WIDTH = 640;  
const int VIEWPORT_HEIGHT = 480;  
const int KEY_ESCAPE = 27;  

CvCapture* g_Capture;  
IplImage* image;  
GLint g_hWindow;  

GLvoid InitGL();  
GLvoid OnDisplay();  
GLvoid OnReshape(GLint w, GLint h);  
GLvoid OnKeyPress (unsigned char key, GLint x, GLint y);  

int main(int argc, char* argv[])  
{  
    glutInit(&argc, argv);  
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);  
    glutInitWindowPosition(100, 100);  
    glutInitWindowSize(VIEWPORT_WIDTH, VIEWPORT_HEIGHT);   

    g_hWindow = glutCreateWindow("Image");   

    image = cvLoadImage("average.jpg", 1);  
    gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, image->width, image->height, GL_RGB, GL_UNSIGNED_BYTE, image->imageData);   

    InitGL();   

    glutMainLoop();   

    return 0;   
}   

GLvoid InitGL()  
{  
    glClearColor (0.0, 0.0, 0.0, 0.0);    

    glutDisplayFunc(OnDisplay);    
    glutReshapeFunc(OnReshape);    
    glutKeyboardFunc(OnKeyPress);    
}    

GLvoid OnDisplay(void)    
{    
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  
    glEnable(GL_TEXTURE_2D);  

    glPushMatrix();  
        glTranslatef(0.0f, 0.0f, -2.5f);  

        glBegin(GL_QUADS);  

            glTexCoord2f(0.0f, 0.0f);  
            glVertex3f(-1.0f,-1.0f, 1.0f);    

            glTexCoord2f(1.0f, 0.0f);  
            glVertex3f( 1.0f,-1.0f, 1.0f);  

            glTexCoord2f(1.0f, 1.0f);  
            glVertex3f( 1.0f, 1.0f, 1.0f);  

            glTexCoord2f(0.0f, 1.0f);  
            glVertex3f(-1.0f, 1.0f, 1.0f);  

        glEnd();  
    glPopMatrix();  

    glutSwapBuffers();  
}  

GLvoid OnReshape(GLint width, GLint height)  
{  
    if (height==0)  
        height=1;  

    glMatrixMode(GL_PROJECTION);  
    glLoadIdentity();  

    glViewport(0, 0, width, height);  
    gluPerspective(45.0f,(GLfloat)width/(GLfloat)height, 1.0f, 10.0f);  

    glMatrixMode(GL_MODELVIEW);  
    glLoadIdentity();  
    gluLookAt( 0.0, 0.0, 0.0, 0.0, 0.0, -6.0, 0.0f, 1.0f, 0.0f);  
}  

GLvoid OnKeyPress(unsigned char key, int x, int y)  
{  
    switch (key) {  
        case KEY_ESCAPE:  
            cvReleaseImage(&image);   
            glutDestroyWindow(g_hWindow);  
            exit(0);  
            break;  
    }   
    glutPostRedisplay();  
}  

顺便提一句。在此代码中,我加载图像而不是从网络摄像头获取图像。

有什么建议吗?


翻转正在渲染的四边形上的纹理坐标。 OpenGL 确实以与大多数人想象的方式“颠倒”的方式存储纹理,因此处理它的最简单方法就是使用 OGL。

        glTexCoord2f(0.0f, 1.0f);  
        glVertex3f(-1.0f,-1.0f, 1.0f);    

        glTexCoord2f(1.0f, 1.0f);  
        glVertex3f( 1.0f,-1.0f, 1.0f);  

        glTexCoord2f(1.0f, 0.0f);  
        glVertex3f( 1.0f, 1.0f, 1.0f);  

        glTexCoord2f(0.0f, 0.0f);  
        glVertex3f(-1.0f, 1.0f, 1.0f);

我认为应该这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenGL 纹理反转 的相关文章

  • 在 C# 中创建具有单独列的分隔文本

    我一直在尝试在 C 中创建一个制表符限制的文本文件 以便数据正确显示在单独的列中 Firstname Lastname Age John Smith 17 James Sawyer 31 我尝试过 t 字符 但我得到的只是 Firstnam
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • 私有模板函数

    我有一堂课 C h class C private template
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • 使用 OpenCV 进行三角形检测

    我有以下示例图像 我想用白色填充角落里的这些三角形 我如何使用 OpenCV 检测它们 当然 在这个特定的示例中 我可以只依靠渐变或亮度 然而 未来图像的形状不会如此完美 所以我正在考虑一些形状检测 我听说形状通常可以通过例如霍夫变换来检测
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • Scala中递归删除目录

    我正在编写以下内容 使用 Scala 2 10 和 Java 6 import java io def delete file File if file isDirectory Option file listFiles map toLis
  • 在某些设备上,两个活动之间的拖放功能不起作用

    我使用以下代码将视图从应用程序中的一个活动拖动到另一个活动 知道拖动开始时第二个活动 接收放置事件 未创建 活动 它适用于 三星 Note 3 Android 5 API 21 三星 Note 4 Android 6 0 1 API 23
  • 从我的应用程序捕获 iPhone 屏幕并录制视频

    我只是好奇创建一个应用程序来录制 iPhone 屏幕视频或捕获 iPhone 屏幕图像 我知道苹果不允许应用程序商店上架此类应用程序 而且我无意这样做 我可以将我的应用程序上传到Cydia如果我愿意的话 但我目前的目标只是开发一个具有捕获
  • 单核处理器上的单线程与多线程编程

    有人可以解释一下编写在单核处理器上运行的多线程代码是否真的有任何优势吗 例如 一种处理文档页面的方法 使得页面与上述代码段是互斥的 乍一看 这似乎没有优势 因为真正的多线程是不可能的 也就是说 操作系统无论如何都必须对线程进行上下文切换 我
  • 下拉列表选定值

    我已经使用 Web 服务创建了国家 地区的下拉列表 并且尝试将下拉列表选择添加到 sql 数据库中 但是当我在插入语句中使用 ddlCountry SelectedValue 执行此操作时 只有下拉列表中的第一个值是出现在表中 我应该使用
  • 语音合成器“输入字符串的格式不正确”

    这是我的代码 string message Hello world SpeechSynthesizer synth new SpeechSynthesizer Prompt prompt new Prompt message synth S
  • IE9奇怪的表格问题

    大家好 我想知道是否有人可以提供帮助 因为我一片空白 我有一个使用 css 设计的表格 除了 IE9 甚至其他 ie 版本 之外 它在所有浏览器中都呈现良好 我不知道为什么 我什至尝试删除所有 css 但它仍然发生 有什么想法吗 Examp
  • VirtualDocumentRoot 域和子域

    普通域和子域是否可以有 VirtualDocumentRoot http www example com or http example com Uses var www example com And http example com U
  • UI 自动化 - #32770(对话框)在 Insepct.exe 中显示,但不在 VisualUIAVerifyNative.exe 中显示

    我正在尝试使用 UI Automation C API 自动化子窗口 ClassName 的对话框为 32770 目标子窗口显示在Spy and 检查程序 但不显示在VisualUIAVerifyNative 它也无法通过 Automati
  • 在其参数结构上重载 C/C++ 预处理器宏

    我想编写一个预处理器宏 如果它的参数是带括号的标记元组 它会做一件事 如下所示 MY MACRO x y 如果它只是一个令牌 还有其他东西 如下所示 MY MACRO x 那可能吗 如何区分空格分隔的标记的数量 即MY MACRO x an
  • Android 模块与风味之间的区别

    android模块和风格之间的主要区别是什么 来自模块定义https developer android com studio projects add app module html https developer android com
  • 使用缩放图块最大化矩形区域覆盖范围的算法

    I have N需要放置在固定大小的矩形表面 工具箱 内的可扩展方形图块 按钮 我想以相同的尺寸呈现所有按钮 我怎样才能解决瓷砖的最佳尺寸 以提供被瓷砖覆盖的矩形表面的最大面积 Let W and H是矩形的宽度和高度 Let s是正方形的
  • BeautifulSoup HTML 获取 src 链接

    我正在使用 python 3 5 1 和 requests 模块制作一个小型网络爬虫 该模块从特定网站下载所有漫画 我正在尝试一个页面 我使用 BeautifulSoup4 解析页面 如下所示 import webbrowser impor
  • 如何从闪亮的callModule函数返回输入值

    我目前正在尝试根据以下内容模块化我的闪亮应用程序本教程 http shiny rstudio com articles modules html 在我的实际应用程序中 我有两个selectInput允许用户选择第一个和最后一个季度结束日期
  • WCF 服务参考 - 在客户端获取“XmlException:名称不能以 '<' 字符开头,十六进制值 0x3C”

    我有一个智能客户端应用程序通过 WCF 与其服务器进行通信 数据在客户端上创建 然后通过服务发送以进行持久化 服务器和客户端通过共享 dll 使用相同的域类 并且我在 Visual Studio 中使用方便的 添加服务引用 功能 该功能包装
  • 如何将双精度数组传递给 C 中的函数?

    我一整天都在尝试解决这个问题 如何将双精度数组传递给函数 这是一个例子 int matrix 5 2 1 2 3 4 5 6 7 8 9 10 我希望将此矩阵传递给名为的函数eval matrix void eval matrix int
  • heroku - system.properties 和 java 版本

    我想将我的 java 7 应用程序部署到Heroku但我遇到了java版本的一些问题 I added system properties我的项目根目录中的文件 其中src and pom xml是 有内容java runtime versi
  • 如何在其他活动的 onResume 之后更新 ListView?

    我正在尝试创建一个应用程序 使用户能够创建事件 然后邀请参与者 因此 当用户进入 添加参与者 页面时 输入所有信息后 我尝试使用 onResume 直接返回 参与者列表 页面 但如何更新列表视图 我尝试使用notifyDataSetChan
  • 在某些计算机上应用程序无法加载 sqlite dll 文件

    我编写了一个使用 sqlite 的应用程序 它在most的系统 它是用 C 编写的 唯一的非框架程序集是 sqlite 它包含在 System Data SQLite dll 中 我以相同的方式在所有计算机上部署它 复制粘贴 exe 文件
  • OpenGL 纹理反转

    我正在尝试将网络摄像头的输入映射到 OpenGL 中的平面 我正在使用 OpenCV 从网络摄像头获取图像 我遇到的问题是纹理是垂直反转的 如果我的纹理是 v 则当前结果是 我想将从网络摄像头拍摄的图像调整到我的飞机上 2x2 它的左下角是