gpt4 book ai didi

c++ - 使用 OpenCV 进行 UV 映射 OpenGL

转载 作者:行者123 更新时间:2023-11-28 04:19:28 25 4
gpt4 key购买 nike

<分区>

我无法从 OpenCV 图像中获取图像以映射到 OpenGL 中的二维平面上。每当我尝试使用下面的代码将图像渲染到平面上时,我得到的是黄色平面而不是上面的实际图像。

// My Init code
cv::Mat mat(640, 480, CV_8UC3, cv::Scalar(255, 0, 0));

GLuint tid = 0;
if (tid != 0)
{
glDeleteTextures(1, &tid);
}

glGenTextures(1, &tid);
glBindTexture(GL_TEXTURE_2D, tid);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, mat.cols, mat.rows, 0, GL_BGR, GL_UNSIGNED_BYTE, (void*)mat.data);
glGenerateMipmap(GL_TEXTURE_2D);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glBindTexture(GL_TEXTURE_2D, 0);

.

// My Render Code
{
glPushMatrix();
glMatrixMode(GL_MODELVIEW);
glTranslatef(0, 0, 0);

glBindTexture(GL_TEXTURE_2D, tid);

GLfloat sq_vert[] = {-1, -1, 1, -1, 1, 1, -1, 1};
glVertexPointer(2, GL_FLOAT, 0, sq_vert);
glEnableClientState(GL_VERTEX_ARRAY);

GLfloat sq_tex[] = {0, 0, 1, 0, 1, 1, 0, 1};
glTexCoordPointer(2, GL_FLOAT, 0, sq_tex);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);

glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);

glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);

glBindTexture(GL_TEXTURE_2D, 0);

glDisable(GL_TEXTURE_2D);
glPopMatrix();
}

Image

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com