如何从墙角度获得“点”的位置?我知道摄像机视角下的x,y,(z)坐标,并且我知道墙的边缘点。
我想计算一下,如果这个点站在墙的前面,在它的女巫边(左,右)。 我的想法是计算墙的平面方程,并测试从点到平面的垂直线是否在墙的边界处击中它。
我可以这样做,而不使用z坐标(这是非常不准确的),墙壁和相机之间的角度是可变的。在OpenCV中计算透视变换
0
A
回答
0
如果您知道墙中心的xc,yc位置,则可以转换新参照系中该点的X,Y坐标。
首先,翻译原点。如果相机是在坐标(0,0),该poinx的新坐标(X“ Y”,Z')在3D世界将
X' = X - xc
Y' = Y - yc
Z' = Z
(从图像中假设墙ortogonal到XY平面)
现在,您必须围绕您知道的角度的Z轴旋转,并获得相对于墙中心的最终坐标X“,Y”,Z“。
如果角度SI APLHA你导出rotational matrix around Z
cos(alpha) -sin (alpha) 0
R = [sin(alpha) cos(alpha) 0]
0 0 1
和获得(由矢量moltiplication矩阵)
(X'', Y'', Z'') = R*(X',Y',Z')
则必须再次获得Z ''= Z现在
你可以定义点在墙的中间左侧或右侧,检查X''> 0或X''< 0(你也可以用Y'来做,它取决于哪个值o ˚F阿尔法你已经使用)
如果这个答案假设的东西你不已经有(α,XC,YC,三维坐标点)告诉我,我将添加一个方法或策略。
0
如果z坐标不重要,则可以将其忘记并仅使用x,y。
而不是一架飞机,你适合一条线的墙壁的2D点。接下来,按照您的建议,计算一条线,该线穿过绿色点并垂直于墙的线,并计算墙线和垂直线之间的交点。
如果交点的x或y坐标是墙壁的限制内,
x_wall_min < X < x_wall_max或y_wall_min <Ý< y_wall_max,
比点矗立在壁的前面。
如果墙壁和摄像机之间的角度可能会发生变化,那么您必须更好地定义“墙的左侧或右侧”,因为它在某些角度可能不明显。
相关问题
- 1. OpenCV:了解warpPerspective /透视变换
- 2. 透视变换
- 3. OpenCV,计算机视觉
- 4. 在Excel数据透视表中计算百分比变化
- 5. 计算领域透视表
- 6. 透视表计算领域
- 7. OpenCV PCA在Python中计算
- 8. Python - 从旋转角度对OpenCV进行透视变换
- 9. 使用Android OpenCV进行图像透视变换
- 10. 帮助使用OpenCV warp查看和透视变换
- 11. 从MATLAB中的4个点计算2D齐次透视变换矩阵
- 12. 如何在OpenCV中获得平滑的透视变形
- 13. 变换和数据透视在MySQL
- 14. 透视计算递减大小
- 15. sql数据透视表和计算列
- 16. 计算使用熊猫透视表
- 17. 多列数据透视样式计算
- 18. 数据透视表计算字段在计算列和总计列上
- 19. 在OpenCV中计算3D梯度方向
- 20. 在OpenCV中计算代码簿
- 21. 在数据透视表中添加一个计算的字段
- 22. 无法在.xlsx代中触发数据透视表计算
- 23. 透视转换
- 24. 如何理解CSS3 3D变换透视
- 25. 将透视变换应用于MKMapView
- 26. CSS3“曲面”3D变换/透视帮助
- 27. UICollectionViewCell透视变换出现/消失
- 28. 查询变换和数据透视
- 29. 透视变换三角形点
- 30. 坐标数组透视变换