我试图从图像估计汽车的尺寸(在这种情况下是宽度)。我有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图像计算物体的尺寸,我们至少需要2张图像,就像我们的眼睛一样。现在,根据给定的场景,我如何找到汽车的宽度(即从背光左角到背光右角的真实世界距离)?我有从相机到汽车的距离,并且每个摄像机位置之间也有距离。 另外,如果这些(或相关的)工作已经作为python或任何其他语言的开源存在,请告诉我?感谢。
答案 0 :(得分:0)
您使用的传统CV算法无法解决问题,因为您的角在平面背景中将是准确的。
我建议您使用2D对象检测算法,从那里您将获得图像空间中对象的高度和宽度,即像素长度。
对于获得的世界空间宽度,请使用相机校准转换等。