将数学函数从 Python 转换为 c++
Converting Math functions from Python to c++
我正在尝试将一些opencv代码从python转换为c ++,但有点迷茫。蟒蛇是:
if 0 < R[1,1] < 1:
# If it gets here, the pose is flipped.
# Flip the axes. E.g., Y axis becomes [-y0, -y1, y2].
R *= np.array([
[ 1, -1, 1],
[ 1, -1, 1],
[-1, 1, -1],
])
# Fixup: rotate along the plane spanned by camera's forward (Z) axis and vector to marker's position
forward = np.array([0, 0, 1])
tnorm = T / np.linalg.norm(T)
axis = np.cross(tnorm, forward)
angle = -2*math.acos(tnorm @ forward)
R = cv2.Rodrigues(angle * axis)[0] @ R
到目前为止,我有:
cv::Mat R;
if (0 < R.at<double>(1, 1) < 1) {
// Flip the axes.E.g., Y axis becomes[-y0, -y1, y2].
float mult[9] = { 1, -1, 1, 1, -1, 1,-1, 1, -1 };
cv::Mat FlipAxes = cv::Mat(3, 3, CV_32F, mult);
R *= FlipAxes;
//# Fixup: rotate along the plane spanned by camera's forward (Z) axis and vector to marker's position
cv::Vec3d forward(0, 0, 1);
double tnorm = tvecBest / np.linalg.norm(T)
axis = np.cross(tnorm, forward)
angle = -2 * math.acos(tnorm @ forward)
R = cv2.Rodrigues(angle * axis)[0] * R
}
我迷失在这些方面:
double tnorm = tvecBest / np.linalg.norm(T)
axis = np.cross(tnorm, forward)
angle = -2 * math.acos(tnorm @ forward)
C++ OpenCV 中的np.linalg.norm
相当于什么?
np.linalg.norm(T( 只是 L2 范数:
sqrt(T[0]*T[0]+T[1]*T[1]+T[2]*T[2])
np.cross(tnorm, forward( 是交叉乘积:
axis[0] = tnorm[1]*forward[2]-tnorm[2]*forward[1]
axis[1] = -tnorm[0]*forward[2]+tnorm[2]*forward[0]
axis[2] = tnorm[0]*forward[1]-tnorm[1]*forward[0]
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 是否可以从int转换为enum类类型
- 了解 GLM- openGL 中的相机转换
- 将无符号char*转换为std::istream*C++