我用opencv-python编写了一段代码,用于计算对象高度和宽度的像素数。 比方说,
高度= 567 像素宽度= 324 像素 我也有相机的KNOWN_FOCAL_LENGTH和原始物体和相机之间的距离。
# Getting the biggest contour
cnt = max(contours, key = cv2.contourArea)
cv2.drawContours(image, cnt, -1, (0, 255, 0), 3)
peri = cv2.arcLength(cnt, True)
approx = cv2.approxPolyDP(cnt, 0.005* peri, True)
# get the bounding rect
x, y, w, h = cv2.boundingRect(approx)
print("Width in pixels : {}, Height in pixels : {}".format(w,h))
# draw a green rectangle to visualize the bounding rect
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
WidthData = "Width : {} mm".format(round(w/scaling_factor,2))
HeightData = "Height : {} mm".format(round(h/scaling_factor,2))
textData = WidthData + ", " + HeightData
cv2.putText(image, textData, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 0), 2)
print(WidthData)
print(HeightData)
cv2.imshow('Result', image)
如何计算将number_of_pixels转换为original_length的系数 图像? 如何计算scaling_factor?
您需要一种方法将以像素为单位的测量值转换为以米为单位的测量值。可能的方法是,按准确性排序。
- 查找相机传感器的物理尺寸,例如从相机的规格表中,或者,如果幸运的话,从存储在图像中的元数据以及像素(EXIF标头(
- 在场景中放置已知大小的对象。
- 直接将焦距从像素缩放到镜头给出的毫米。