我對OpenCV非常陌生,在OpenGL上的經驗有限。我願意在棋盤的校準圖像上覆蓋3D對象。任何提示或指導?增強現實OpenGL + OpenCV
回答
基本的想法是,你有2個攝像頭:一個是物理的(你用opencv回想圖像的那個),另一個是opengl。你必須對齊這兩個矩陣。
要做到這一點,您需要校準物理相機。
首先。您需要一個失真參數(因爲每個透鏡或多或少都有一些光學失真),並用這些參數構建所謂的內部參數。您可以在一張紙上打印棋盤,使用它獲取一些圖像並校準相機。它充滿了關於互聯網上的很好的教程,從你的答案看來你有他們。這很好。
然後。你必須校準相機的位置。這是通過所謂的外部參數完成的。這些參數編碼位置和旋轉這些相機的3D世界。
內部參數由OpenCV的方法cv::solvePnP
和cv::Rodrigues
和使用該羅德里格斯方法獲取外部參數需要。該方法獲取輸入2組對應點:一些3D知識點及其二維投影。這就是爲什麼所有的增強現實應用都需要一些標記:通常標記是方形的,所以在檢測到它後,您知道點P1(0,0,0)P2(0,1,0)P3(1,1, 0)P4(1,0,0)形成一個正方形,你可以找到飛機躺在它們上面。
一旦你擁有了外在參數,所有的遊戲都很容易解決:你只需在OpenGL中用FoV和攝像機的內角參數進行透視投影,並將攝像機置於外在參數。
當然,如果你想(你應該)理解和正確處理這個過程的每一步。再次有很多數學 - 矩陣,角度,四元數,矩陣和..矩陣。您可以在着名的Multiple View Geometry in Computer Vision from R. Hartley and A. Zisserman.中找到參考
此外,爲了正確處理opengl部分,您必須處理所謂的「Modern OpenGL」的相機位置(對我來說這是一個問題,因爲我不知道這件事)。
我已經處理了這個前幾次,我有一些代碼,所以隨時問你有任何問題。這裏是一些鏈接,我發現興趣:
- http://ksimek.github.io/2012/08/14/decompose/(真的很好的解釋)
- Camera position in world coordinate from cv::solvePnP(我提出的問題有關)
- http://www.morethantechnical.com/2010/11/10/20-lines-ar-in-opencv-wcode/(約計算機視覺神話般的博客)
- http://spottrlabs.blogspot.it/2012/07/opencv-and-opengl-not-always-friends.html(好的技巧) http://strawlab.org/2011/11/05/augmented-reality-with-OpenGL/
- http://www.songho.ca/opengl/gl_projectionmatrix.html(OpenGL的相機設置基礎很好的解釋)
- 其他一些隨機有用的東西: http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html(文檔,總是看文檔!) Determine extrinsic camera with opencv to opengl with world space object Rodrigues into Eulerangles and vice versa Python Opencv SolvePnP yields wrong translation vector http://answers.opencv.org/question/23089/opencv-opengl-proper-camera-pose-using-solvepnp/
請任何事情之前閱讀。像往常一樣,一旦你得到了這個概念,這是一個簡單的笑話,需要把你的大腦撞上牆壁。只是不要害怕從所有這些數學:)
嘿,我試着按照你的指示,但我遇到了一個問題,你介意看看[我的帖子](https:// stackoverflow.com/q/44313684/896112)? – Carpetfizz
- 1. 增強現實 - 將GPS映射到OpenGL
- 2. 增強現實
- 3. 增強現實
- 4. 增強現實
- 5. 自然標記增強現實實現
- 6. 增強現實-PC
- 7. 增強現實iphone
- 8. 增強現實imageRecognition
- 9. Android增強現實
- 10. 增強現實 - Android
- 11. 增強現實遊戲
- 12. 標記增強現實與框架臨Android的增強現實
- 13. OPenCV增強差異
- 14. 增強現實3D模型渲染
- 15. 增強現實QualComms Vuforia
- 16. 移動增強現實
- 17. iOS上的增強現實?
- 18. 增強現實框架
- 19. 增強現實和羣集
- 20. 從增強現實開始
- 21. QualComm Vuforia增強現實
- 22. 單聲道增強現實
- 23. 增強現實flartoolkit旋轉
- 24. Unity3d的增強現實SDK
- 25. 增強現實室內
- 26. wp7中的增強現實
- 27. 關於增強現實
- 28. Java腳本增強現實
- 29. 增強現實iPhone的
- 30. Vuforia的增強現實
你是什麼意思的「校準」?你的意思是棋盤上每個方格的每一邊的長度與一些有用的測量有關(即1邊長= 1英尺/英寸/米/等)? – redsoxfantom
我的意思是我正在進行相機校準,棋盤是校準對象。現在我想要的是使用openGL在校準對象上渲染2D或3D對象。 – user3303396
啊,好的。對不起,我不知道太多可以幫到你,試試scap3y的回答 – redsoxfantom