# order the points in the contour such that they appear # in top-left, top-right, bottom-right, and bottom-left # order, then draw the outline of the rotated bounding rect = perspective.order_points(box) # compute the center of the bounding box cX = int(np.average(box[ :, 0 ])) cY = int(np.average(box[ :, 1 ])) print(rect.astype("int")) print("") # extract all the edges as tuple (tl, tr, br, bl) = rect # compute width (tlblX, tlblY) = midpoint(tl, bl) (trbrX, trbrY) = midpoint(tr, br) # multiply by a constant we used while converting from pixel to actual breadth breadth = (dist.euclidean((tlblX, tlblY), (trbrX, trbrY))) * 0.046 print(breadth) # compute length (tltrX, tltrY) = midpoint(tl, tr) (blbrX, blbrY) = midpoint(bl, br) # multiply by a constant we used while converting from pixel to actual length length = (dist.euclidean((tltrX, tltrY), (blbrX, blbrY))) * 0.042 print(length) cv2.line(org, (int(tlblX), int(tlblY)), (int(trbrX), int(trbrY)), (0, 0, 255), 2) cv2.line(org, (int(tltrX), int(tltrY)), (int(blbrX), int(blbrY)), (255, 0, 0), 2)
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter