小编Ter*_*ris的帖子

从基本矩阵中提取翻译和轮换

我试图从计算的基本矩阵中检索平移和旋转向量.我确实使用OpenCV,一般方法来自维基百科.我的代码是这样的:

//Compute Essential Matrix
Mat A = cameraMatrix(); //Computed using chessboard
Mat F = fundamentalMatrix(); //Computed using matching keypoints
Mat E = A.t() * F * A;

//Perfrom SVD on E
SVD decomp = SVD(E);

//U
Mat U = decomp.u;

//S
Mat S(3, 3, CV_64F, Scalar(0));
S.at<double>(0, 0) = decomp.w.at<double>(0, 0);
S.at<double>(1, 1) = decomp.w.at<double>(0, 1);
S.at<double>(2, 2) = decomp.w.at<double>(0, 2);

//V
Mat V = decomp.vt; //Needs to be decomp.vt.t(); (transpose once more)

//W
Mat W(3, 3, CV_64F, Scalar(0));
W.at<double>(0, …
Run Code Online (Sandbox Code Playgroud)

c++ opencv translation rotation matrix

16
推荐指数
1
解决办法
2万
查看次数

OpenCV计算相机位置&&旋转

对于一个项目,我需要计算摄像机相对于已知物体的真实世界位置和方向.我有一组照片,每个都从不同的角度展示棋盘.使用CalibrateCamera和solvePnP我可以在2d重新投影点数,以获得AR事物.所以我的情况是这样的:

  • 内在参数是已知的

  • 失真系数是已知的

  • 翻译矢量和旋转矢量是每张照片都知道的.

我根本无法弄清楚如何计算相机的位置.我的猜测是:

  • 反转翻译矢量.(= T')

  • 将旋转矢量转换为度(似乎是弧度)并反转

  • 在旋转矢量上使用罗德里格兹

  • 计算RotationMatrix*t'

但结果完全不合适......基本上我想为世界坐标中的每个像素计算一条光线.如果需要更多关于我的问题的信息,我很乐意快速回答.

我不明白......不知怎的,光线仍在关闭.这是我的代码btw:

Mat image1CamPos = tvecs[0].clone(); //From calibrateCamera
Mat rot = rvecs[0].clone(); //From calibrateCamera
Rodrigues(rot, rot);
rot = rot.t();

//Position of Camera
Mat pos = rot * image1CamPos;

//Ray-Normal (( (double)mk[i][k].x) are known image-points)
float x = (( (double)mk[i][0].x) / fx) - (cx / fx);
float y = (( (double)mk[i][0].y) / fy) - (cy / fy);
float z = 1;
float mag = sqrt(x*x + y*y + z*z);
x /= …
Run Code Online (Sandbox Code Playgroud)

c++ camera opencv position rotation

4
推荐指数
1
解决办法
7864
查看次数

OpenGL VAO VBO 着色器混乱

我正在编写一个渲染器,现在正在选择处理 vao/vbo/着色器管理的最终方法。在网上,我发现关于实际推荐内容的信息非常矛盾。目前想法如下:

-一个VBO连续存储所有网格。

-每个“着色器映射”创建一个 VAO 以将特定指针映射存储到 VBO 中。(“着色器映射”,在具有相同输入的不同着色器中保持一致)

然后通过“着色器映射”对实体进行排序,并使用主 VBO 中的偏移量进行渲染,从而最大限度地减少着色器和 VAO 开关。就像是:

for(shaders by mapping)
    bindVAO(); //set pointers
    for(shader)
        for(entity using shader)
            entity.setUniforms();
            drawArrays(entity.offset, entity.size);
Run Code Online (Sandbox Code Playgroud)

由于这将包括大量的重构,我想问这个解决方案是否是最佳的。我还想知道是否可以在单个 VBO 中拥有多种交错格式。

c++ opengl glsl vbo vao

4
推荐指数
1
解决办法
936
查看次数

标签 统计

c++ ×3

opencv ×2

rotation ×2

camera ×1

glsl ×1

matrix ×1

opengl ×1

position ×1

translation ×1

vao ×1

vbo ×1