我修改了整流算法。它向我返回2个Opencv同形异义词(3x3矩阵)。我可以使用cv::warpPerspective并获取校正后的图像。因此该算法工作正常。但是我需要将此单应性应用于OpenGl中的纹理。所以我创建了一个4x4矩阵(HomoGl)

glMultMatrixf(HomoGl);

应用此Tranform。要填充HomoGl,我使用
for(int i=0;i<3;++i){
    for(int j=0; j<3;++j){
        HomoGL[i+j*4] =  HomoCV.at<double>(i,j);
    }
}

该方法具有最佳结果……但这是错误的。我测试了其他一些方法[1],但是它们不起作用。

我的问题:如何转换OpenCV同构,所以我可以使用
glMultMatrixf可以正确转换图像。

[1] http://www.aiqus.com/questions/24699/from-2d-homography-of-2-planes-to-3d-rotation-of-opengl-camera

最佳答案

因此H矩阵是平面1上的一个点到平面2上的另一个点的转换。

 X1 = H*X2

在opencv中使用warpHomography时,您会将这些点置于平面2的感知范围内。

warping中获得的矩阵(或图像垫)是应用于表面时应使用的纹理。

10-08 08:56