使用 rvec 和 tvec 从 aruco::estimatePoseSingleMarkers() 查找立方体的中心
Find the center of a cube using rvec and tvec from aruco::estimatePoseSingleMarkers()
我有一个带有 6 个 aruco 标记的立方体,并试图在世界坐标中找到立方体的中心。基本上需要将 aruco 标记中心的已知点向下移动垂直于标记表面的立方体长度的一半。
在汽车游戏中,这类似于根据它的速度和前进的方向找到下一个位置。
我不确定如何在与 rvec 相反的方向上将点变换给定距离。我在世界坐标中追求 3D 位置,所以这个没有多大帮助。
这就是我到目前为止基于projectPoints((实现的内容
Matx33d R;
Rodrigues(rvecs[i], R);
Affine3d aff(rvecs[i], tvecs[i]);
Vec3d move_along_z(0, 0, 0.5f);
Vec3d new_point = aff*move_along_z; // ??
这个答案主要基于这篇文章。
double half_side = 0.05;
cv::Mat rot_mat;
Rodrigues(rvecs[i], rot_mat);
// transpose of rot_mat for easy columns extraction
Mat rot_mat_t = rot_mat.t();
// transform along z axis
double * rz = rot_mat_t.ptr<double>(2); // x=0, y=1, z=2
tvecs[i][0] += rz[0]*half_side;
tvecs[i][1] += rz[1]*half_side;
tvecs[i][2] += rz[2]*half_side;
aruco::drawAxis(imageCopy, camMatrix, distCoeffs, rvecs[i], tvecs[i],
markerLength * 0.5f);
上面的代码将通过在 z 轴上将其变换 half_side 的距离,使 aruco 轴浮动在标记上方。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 在C++中查找文件
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 查找最接近的大于当前数字的数字的索引
- 如何使用 std::累积在 C++ 中计算总和立方体
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 使用正则表达式regex_search在字符串中查找字符串
- 使用gcc从静态链接的文件中查找可选符号
- 在C++中查找范围的长度
- 算法问题:查找从堆栈中弹出的所有序列
- 在Windows中查找扬声器输出的当前音量级别
- 如何在C++中使用X509证书模在令牌中查找私钥
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在 for 循环中查找问题时遇到困难
- C++没有标准功能的立方体根查找器
- 使用 rvec 和 tvec 从 aruco::estimatePoseSingleMarkers() 查找立方体的中心
- 查找在 3D 网格中具有随机点的立方体的角点