2011-06-03 34 views

回答

3

我不會包括設立一個OpenGL上下文,執行實際渲染操作等,認爲這是僞代碼大綱只是想給你你如何能做到這一點的想法(假設你想重用在OpenCV中的輸出中:

首先,你創建一個紋理(必須一次性完成,coirse的),那麼你的OpenCV上傳圖像數據到創建的紋理(或更新)

glGenTextures(1, &texture); 
glBindTexture(GL_TEXTURE_2D, texture); 
glTexImage2D(GL_TEXTURE_2D, ...parameters based on your image, pointer to raw image data); 

現在你的OpenCV的圖像是一個OpenGL紋理。後來,你只需要渲染圖片,檢索像素數據。

glViewport(0,0,imagewidth,imageheight); // has to be done once 
renderTexturedQuadWithShaders(); 
glReadPixels(..., &pointer); // read the raw image data again 

這應該工作,但是不要忘記,你必須使用正確的紋理格式不搞砸了你的圖像數據,你可能需要使用另一個緩衝區(現在我不是100%確定是否可以將圖像數據寫入OpenCV圖像中)。

編輯:您可以渲染到屏幕或幀緩衝區對象,基本概念保持不變。只要確保你渲染到正確的目標。

2

當然,你可以,只要上傳你的圖片作爲OpenGL的紋理,畫出一個紋理映射四,並使用一個片段着色器繪製成具有幀緩衝區對象另一個紋理。

你可以做很多次,然後將紋理數據讀回至CPU,以獲得最終的圖像。

+1

是否有關於如何執行這樣的事情的任何物品或示例代碼演示,或者你能提供一個在這裏嗎? – Rella 2011-06-03 19:54:09

相關問題