【OpenGL】读取视频并渲染

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍读取视频并渲染。
学其所用,用其所学。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:OpenGL读取视频并渲染

😏OpenGL读取视频并渲染

// main.cpp
#include <iostream>
#include <GL/glut.h>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;Mat videoFrame; // 存储当前视频帧
GLuint textureID; // 纹理 IDvoid display()
{glClear(GL_COLOR_BUFFER_BIT);// 将视频帧数据绑定到纹理对象上glBindTexture(GL_TEXTURE_2D, textureID);glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, videoFrame.cols, videoFrame.rows, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, videoFrame.data);// 渲染纹理glBegin(GL_QUADS);glTexCoord2f(0.0, 1.0); glVertex2f(-1.0, -1.0);glTexCoord2f(1.0, 1.0); glVertex2f(1.0, -1.0);glTexCoord2f(1.0, 0.0); glVertex2f(1.0, 1.0);glTexCoord2f(0.0, 0.0); glVertex2f(-1.0, 1.0);glEnd();glutSwapBuffers();
}void updateFrame(int value)
{// 读取下一帧视频// 这里使用了OpenCV库来读取视频文件,确保你已经安装了OpenCV并正确链接它VideoCapture cap("test.mkv");cap >> videoFrame;glutPostRedisplay();glutTimerFunc(1000 / 30, updateFrame, 0); // 设置下一帧更新的时间间隔,这里假设视频的帧率是30fps
}int main(int argc, char** argv)
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);glutInitWindowSize(800, 600);glutCreateWindow("Video Rendering");// 初始化OpenGLglMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho(-1, 1, -1, 1, -1, 1);glMatrixMode(GL_MODELVIEW);glEnable(GL_TEXTURE_2D);glGenTextures(1, &textureID);glBindTexture(GL_TEXTURE_2D, textureID);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);cout << "start display" << endl;glutDisplayFunc(display);cout << "start updateFrame" << endl;glutTimerFunc(0, updateFrame, 0);glutMainLoop();return 0;
}

编译:g++ -o video_rendering main.cpp -lglut -lGL -lGLU pkg-config --cflags --libs opencv``

效果如下:

在这里插入图片描述

在这里插入图片描述

以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/7897.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Elasticsearch

了解如何创建索引&#xff0c;添加&#xff0c;删除&#xff0c;更新文档 参考文档 开始使用 Elasticsearch 1 本文用到Elasticsearch和Kibana 可以看之前的两篇先安装好 Elasticsearch 安装 Kibana安装 Elasticsearch 里的接口都是通过 REST 接口来实现的。 GET 读取数…

你值得拥有——流星雨下的告白(Python实现)

目录 1 前言 2 霍金说移民外太空 3 浪漫的流星雨展示 4 Python代码 1 前言 我们先给个小故事&#xff0c;提一下大家兴趣&#xff1b;然后我给出论据&#xff0c;得出结论。最后再浪漫的流星雨表白代码奉上&#xff0c;还有我自创的一首诗。开始啦&#xff1a; 2 霍金说移民外…

git常用命令之config

14. config 14.1 查看 config 命令作用git config --local -l查看仓库级别git 配置信息git config --global -l查看全局级别git 配置信息git config --system -l查看系统级别git 配置信息git config -l查看所有级别配置信息git config --local --list --show-origingit confi…

Windows开启telnect

1、Telnet是什么&#xff1f; Telnet 是一种网络协议&#xff0c;用于通过网络远程登录到远程计算机或设备上。它允许用户在本地计算机上使用命令行界面&#xff08;命令提示符&#xff09;与远程主机进行交互&#xff0c;就像直接在远程主机上操作一样。Telnet 协议使用 TCP/I…

DataSecurity Plus金融行业案例

摘要&#xff1a;DataSecurity Plus是一款强大的数据安全解决方案&#xff0c;为金融机构提供全面的数据保护和合规性监控。本文将介绍DataSecurity Plus在金融行业的使用案例&#xff0c;包括文件审计、数据分类和合规性报告等功能的应用。 DataSecurity Plus 文件审计&#…

如何设置微信小程序启动页及其全屏背景色?

一、设置启动页 打开微信小程序就会进入pages里面的第一个页面&#xff0c;所以只需要在pages.json中&#xff0c;把启动页写在pages的第一项就可以了 二、去掉导航栏&#xff0c;实现全屏显示效果 先清除全局的导航栏标题&#xff0c;在需要全屏的页面&#xff0c;添加以下代…

2023-最新-发布java工具包到 maven 中央仓库,不踩坑

说明 要想将自己的java工具提交到maven中央仓库并公开&#xff0c;但是maven中央仓库是不允许我们直接上传jar包到它上面的&#xff0c;因此我们只能将jar包发布到它指定的第三方maven仓库&#xff0c;然后这个仓库再将jar包同步到中央仓库。而sonatype的OSSRH仓库就是被认可的…

LVS负载均衡群集与LVS-NAT部署实战配置

文章目录 一.什么是集群1.群集的含义 二.集群使用在那个场景三.集群的分类1.负载均衡器群集2.高可用群集3.高性能运算群集 四.负载集群的架构1.第一层&#xff0c;负载调度器2.第二层&#xff0c;服务器池3.第三层&#xff0c;共享存储 五.负载均衡集群的工作模式1.地址转换 &a…

移动端数据可视化设计

在做APP设计的时候&#xff0c;难免会遇到一些需要展示数据的场景。使用传统的表格和文档展示数据不仅难看&#xff0c;也影响用户理解数据的含义。而数据可视化设计能将数据以更加直观的方式展现出来&#xff0c;使数据更加客观、更有说服力。 在移动应用中&#xff0c;数据可…

Hive详解

一 Hive基本概念 1 Hive简介 学习目标 - 了解什么是Hive - 了解为什么使用Hive1.1 什么是 Hive Hive 由 Facebook 实现并开源&#xff0c;是基于 Hadoop 的一个数据仓库工具&#xff0c;可以将结构化的数据映射为一张数据库表 &#xff0c;并提供 HQL(Hive SQL)查询功能&…

二、Spring Cloud Eureka 简介、快速入门

注册发现中心 Eureka 来源于古希腊词汇&#xff0c;意为“发现了”。在软件领域&#xff0c; Eureka 是 Netflix 在线影片公司开源的一个服务注册与发现的组件&#xff0c;和其他 Netflix 公司的服务组件&#xff08;例如负载均衡、熔断器、网关等&#xff09; 一起&#xff0…

转载-【AI思维空间】Chat2DB 一款开源数据库客户单工具

卸载 Navicat&#xff0c; xxx 又开源了一款数据库神器&#xff0c;太炸了 Chat2DB 是一款有开源免费的多数据库客户端工具&#xff0c;支持windows、mac本地安装&#xff0c;也支持服务器端部署&#xff0c;web网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比Chat2D…