2013-07-29 2 views
0

저는 OpenCV에서 작업 중이며 이미지 텍스처를 추가 할 창이 있습니다. 지금까지 내 코드 :CVWindow에 이미지 텍스처로드

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을에 새로 온 사람과 혼란 그래서 좋은 것 향상 어디서하는 방법에 대한 팁은 여기에서 가서 찾아 (윈도우에 그리는 방법).

답변

1

OpenCV는이 기능을 이미 cvShowImage()과 함께 제공합니다. OpenCV는 이미지를 창에 그리기 위해 OpenGL에서 작업 할 필요가 없습니다. 창을 보여

코드는 다음과 같을 수 있습니다 응답에 대한

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 
} 
+0

감사합니다! 웬일인지 창문이 보이지 않고 적어도 오류는 사라 졌을 것입니다. 어쩌면 지금 내 이미지가 존재하지 않을 수도 있습니다. –

+0

@AndreaF 나는 창문이 보이고 매우 빨리 사라질 것으로 생각한다. 'cvWaitKey()'를 추가하면 키를 누를 때까지 창이 열립니 다 (my edit 참조). 내 대답이 도움이된다면 받아들이겠습니까? 또한 가능한 경우 C API 대신 C++ API를 사용해야합니다. – Aurelius

+0

여전히 빈 이미지가 있지만이를 알아 내고 작동해야합니다. 나는 전환 할 것이지만 나는 많은 cv :: mat을 사용하지 않았고 색상 추적을하고 있기 때문에 C 에서처럼 C++를 쉽게 사용할 수 있는지 확실하지 않았다. 적어도 색상 추적 자습서는 C. –