【问题标题】:Drawing 3D boxes on chessboard - OpenCV, LibGdx and java在棋盘上绘制 3D 框 - OpenCV、LibGdx 和 java
【发布时间】:2015-02-13 12:54:06
【问题描述】:

我是opencv的新手。我在 java 中使用它,这很痛苦,因为互联网上的大多数示例和资源都是用 C++ 编写的。

目前我的项目涉及识别棋盘,然后能够在棋盘的特定部分上绘图。

到目前为止,我已经通过库的 Calib3d 部分获得了角落。但这是我卡住的地方。我的问题是如何将我得到的角点信息(2D 图像上的角点位置)转换为我可以在 3D 空间中使用 LibGdx 绘制的东西?

以下是我的代码(在 sn-ps 中):

public class chessboardDrawer implements ApplicationListner{
... //Fields are here

MatOfPoint2f corners = new MatOfPoint2f();
MatOfPoint3f objectPoints = new MatOfPoint3f();

public void create(){
    webcam = new VideoCapture(0);
    ... //Program sleeps to make sure camera is ready

}

public void render(){
    //Fetch webcam image
    webcam.read(webcamImage);
    //Grayscale the image
    Imgproc.cvtColor(webcamImage, greyImage, Imgproc.COLOR_BGR2GRAY);
    //Check if image contains a chessboard of with 9x6 corners
    boolean foundCorners = Calib3d.findChessboardCorners(greyImage, 
    new Size(9,6), 
    corners, Calib3d.CALIB_CB_FAST_CHECK | Calib3d.CALIB_CB_ADAPTIVE_THRESH);

    if(foundCorners){
        for(int i = 0; i < corners.height; i++){
            //This is where i have to convert the corners 
            //to something i can use in libGdx to draw boxes
            //And insert them into the objectPoints variable
        }
    }
    //Show the corners on the webcamIamge
    Calib3d.drawChessboardCorners(webcamImage, new Size(9,6), corners, true);
    //Helper library to show the webcamImage
    UtilAR.imDrawBackground(webcamImage);
}
}

有什么帮助吗?

【问题讨论】:

    标签: java opencv libgdx computer-vision augmented-reality


    【解决方案1】:
    1. 您实际上需要使用这些坐标定位(物理)相机。

      还好,在棋盘的情况下真的很容易。

      Camera pose estimation

      注意:
      OpenCV 中的当前实现在准确性方面可能无法满足您的要求(至少对于单目相机而言)。良好的 AR 体验需要良好的准确性。

    2. 可选使用一些噪声过滤方法/估计算法来稳定跨时间/帧的姿态估计(最好是Kalman Filter)。

      这将减少抽搐和摇晃。

    3. 使用上述估计的姿势控制PerspectiveCamera 的姿势(位置+方向)。

    4. 根据您提供给相机校准方法的objPoints,使用比例和初始方向绘制 3D 内容。

      你可以关注这个nice blog post来做。

    您现在渲染的所有 3D 模型都将位于棋盘的参考框架中。

    希望这会有所帮助。
    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 2014-10-21
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      相关资源
      最近更新 更多