我在OpenCV工作,并有一个窗口,我想添加图像纹理。到目前为止我的代码:
void display(void) {
GLuint texture[1];
IplImage *image;
image=cvLoadImage("Particle.png");
if(!image){
std::cout << "image empty" << std::endl;
} else {
glGenTextures(1, texture);
glBindTexture(1, GL_TEXTURE_2D );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Set texture clamping method
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
}
cvReleaseImage(&image);
}
int main(int argc, char**argv)
{
display();
}
//window to draw the texture on
cvNamedWindow("video");
我是OpenGL的新手并发现它令人困惑,所以任何关于如何改进它的提示都会很棒或者从这里开始(如何在窗口上绘制)。
答案 0 :(得分:1)
幸运的是,您无需在OpenGL中进行任何工作以在窗口中绘制图像:OpenCV已经使用函数cvShowImage()
提供此功能。
显示窗口的代码可能是:
if(!image)
{
std::cout << "image empty" << std::endl;
}
else
{
cvNamedWindow("image"); // Create the window
cvShowImage("image", image); // Display image in the window
cvWaitKey(); // Display window until a key is pressed
}