使用Python从图像计算汽车宽度

使用Python从图像计算汽车宽度,python,opencv,image-processing,3d,Python,Opencv,Image Processing,3d,我试图从图像中估计汽车的尺寸(本例中为宽度)。我有3个不同的图像(不同角度)如下所示。我使用了基本的东西来确定图像的精明边缘,结果也显示在下面的图像中。以下是每辆车的基本代码: file = 'image.jpg' img = cv2.imread(file, cv2.IMREAD_COLOR) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) bilateral = cv2.bilateralFilter(gray, 9, 75, 75) canny =

我试图从图像中估计汽车的尺寸(本例中为宽度)。我有3个不同的图像(不同角度)如下所示。我使用了基本的东西来确定图像的精明边缘,结果也显示在下面的图像中。以下是每辆车的基本代码:

file = 'image.jpg'
img = cv2.imread(file, cv2.IMREAD_COLOR)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
bilateral = cv2.bilateralFilter(gray, 9, 75, 75)
canny = cv2.Canny(bilateral, 50, 255)
cv2.imshow('Canny Image', canny)
cv2.waitKey(0)

现在,如果我使用
cv2.goodFeaturesToTrack()
cv2.cornerHarris()
检测角点,下图显示我得到了非常奇怪的结果,以蓝色圆点显示

我研究过,如果我们想从2D图像计算物体的尺寸,我们至少需要两张像眼睛一样的图像。现在,在给定的场景中,我如何找到汽车的宽度(即从尾灯左角到尾灯右角的真实世界距离)?我有从摄像机到汽车的距离,也有每个摄像机位置之间的距离。
另外,请让我知道这些(或相关)工作是否已经以python或任何其他语言的开源形式存在?谢谢。

您使用的是传统的CV算法,它无法解决您的问题,因为您的角点在平面背景中是精确的。
我建议您使用2D对象检测算法,从中可以得到图像空间中对象的高度和宽度,即像素长度。
对于获得的世界空间宽度,使用摄像机标定变换等

这个答案可能对你有帮助。
.

您使用的是传统的CV算法,该算法无法解决您的问题,因为您的角点在平面背景中是精确的。
我建议您使用2D对象检测算法,从中可以得到图像空间中对象的高度和宽度,即像素长度。
对于获得的世界空间宽度,使用摄像机标定变换等

这个答案可能对你有帮助。
.

首先必须提取前景。在这种情况下,你必须从图像中提取出汽车,然后只会对宽度的估计进行角点检测。@ AZFAR FAZZAN,如果你了解摄像机和投影矩阵的概念,用于点三角测量,你可以检查C++源。如果你擅长这一点,那么唯一的问题就是如何从两个背景光中检测和分割点。首先,你必须提取前景。在这种情况下,你必须从图像中提取出汽车,然后只会对宽度的估计进行角点检测。@ AZFAR FAZZAN,如果你了解摄像机和投影矩阵的概念,用于点三角测量,你可以检查C++源。如果您在这方面很熟练,那么唯一的问题就是如何从两个背光中检测和分割点。