Python 利用OpenCV中的单应性从视频中计算物体高度

Python 利用OpenCV中的单应性从视频中计算物体高度,python,opencv,computer-vision,augmented-reality,homography,Python,Opencv,Computer Vision,Augmented Reality,Homography,我试图测量在我使用OpenCV和Python开发的跟踪应用程序中检测到的对象的高度。我已经计算了单应矩阵,所以我知道每个物体在现实世界中的位置,以及它在视频帧上的明显高度。我不知道摄像机的真实位置。我已经看到相机姿态矩阵可以从单应矩阵计算出来,但我不确定该怎么做 视频是从头部水平拍摄的,拍摄对象主要是人。单应性将摄影机像素变换到地面 通过将最左边和最右边的坐标转换为真实世界坐标并测量它们之间的距离,可以测量对象的宽度。如何计算高度?您需要计算消失点和交叉比。 您可以在此处找到更多信息: 你需要更

我试图测量在我使用OpenCV和Python开发的跟踪应用程序中检测到的对象的高度。我已经计算了单应矩阵,所以我知道每个物体在现实世界中的位置,以及它在视频帧上的明显高度。我不知道摄像机的真实位置。我已经看到相机姿态矩阵可以从单应矩阵计算出来,但我不确定该怎么做

视频是从头部水平拍摄的,拍摄对象主要是人。单应性将摄影机像素变换到地面


通过将最左边和最右边的坐标转换为真实世界坐标并测量它们之间的距离,可以测量对象的宽度。如何计算高度?

您需要计算消失点和交叉比。 您可以在此处找到更多信息:

你需要更清楚地知道自己在做什么和不知道什么。例如,你所说的“我知道现实世界中每个物体的位置”是什么意思?你的意思是相对于相机还是相对于某个世界原点?还有,为什么不能使用与计算宽度和计算高度完全相同的过程呢?如果你把相机旋转90度,所有的宽度都会变成高度……我知道每个物体相对于世界原点的位置。我通过知道单应性来计算。我无法旋转相机,因为我使用的是视频文件。我的观点不是旋转相机可以解决问题,而是我不明白高度和宽度之间的有效差异是什么。这两个都只是x-y平面上的距离测量。你是对的,这不清楚。我扩大了问题的范围。我的x-y平面在地面上,所以只能在上面测量宽度。高度应该是z。好的,你的问题可以简化为:给定图像xim和yim中的一个点,以及与该图像点对应的已知坐标xworld或yworld,如何找到zworld?你的相机也校准了吗?