c# - 打开CV : set model position using rotation and translation vector

标签 c# c++ opencv unity3d gameobject

我有一个统一的 3D 模型。我使用 opencv solvePnP vector 计算旋转和平移 vector 。

现在,我尝试使用这些值设置模型位置。我的 C# 代码如下:

Vector3 objPosition;
objPosition.x = gameObject.transform.position.x + tvec.x;
objPosition.y = gameObject.transform.position.y + tvec.y; 
objPosition.z = gameObject.transform.position.z + tvec.z;
gameObject.transform.position = objPosition;

Quaternion quat = new Quaternion(rvec.x, rvec.y, rvec.z, 1.0f);
gameObject.transform.rotation = quat;

但结果对我来说不是真的。如何统一使用 opencv 旋转和平移 vector ?

编辑

我有一个 3d 模型。我手动确定对象和模型上的对应点。我想放置包含已知对象的二维图像。我使用 solvePnp 获取相机和对象关系。

我使用 unity 场景、opencv 旋转和平移 vector 来显示 3d 模型。也许我应该改变我的问题。

如何使用 3d-2d 点对应检测对象的位置和方向?

最佳答案

看看 Unity documentation用于欧拉到四元数的计算

Quaternion quat = Quaternion.Euler(new Vector3(rvec.x, rvec.y, rvec.z))

关于c# - 打开CV : set model position using rotation and translation vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34586740/

相关文章:

c# - 在 C# 中使用 SQLite 的 Pragma-s

c# - 附加属性不触发 IMultiValueConverter

python - numpy python openCv 重新映射

c++ - 轮廓 opencv : How to eliminate small contours in a binary image

c++ - initializer_list 返回的生命周期延长

python - 具有多个正图像的 OpenCV haar 分类器训练

c# - 确定哪个代码行抛出异常

c# - 使用基类在多个浏览器中运行 Selenium 测试

c++ - 如何在 C++14 中衰减右值引用类型,同时保留左值引用?

c++ - 为什么下面使用 auto_ptr 的异常安全代码不同?