How do these function works? I am using Python3.7 and OpenCv 4.2.0. Thanks in Advance.
approx = cv2.approxPolyDP(cnt, 0.01*cv2.arcLength(cnt, True), True)
Accordingly, we start looping epsilon’s ( eps) value over a range to feed it to the contour approximation function ( Line 45 ). On Line 47, the perimeter of the contour is calculated using cv2.arcLength. We then use the cv2.approxPolyDP function and initiate the contour approximation process ( Line 48 ).
OpenCV program in python to determine the shape of the polygons in a given image by using approxPolyDP () function name the detected shapes and then display the resulting image as the output on the screen: The output of the given program is shown in the snapshot below:
We make use of a function in OpenCV called approxPolyDP () function to perform an approximation of a shape of a contour. The image of a polygon whose shape of a contour must be approximated is read using the imread () function.
Considering your size is small enough to ignore redundant turns (parts where you can go straight without following the exact curves of the road), it would be easier for you if you could remove some redundant vertices. Something like Figure 3: Figure 3: Contour Approximation in action.
If you are looking for a example snippet, below is one:
import cv2
import imutils
# edged is the edge detected image
cnts = cv2.findContours(edged, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:5]
# loop over the contours
for c in cnts:
# approximate the contour
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.02 * peri, True)
# if our approximated contour has four points, then we
# can assume that we have found our screen
if len(approx) == 4:
screenCnt = approx
break
In the above snippet, first it finds the contours from a edge detected image, then it sorts the contours to find the five largest contours. Finally it loop over the contours and used cv2.approxPolyDP
function to smooth and approximate the quadrilateral. cv2.approxPolyDP
works for the cases where there are sharp edges in the contours like a document boundary.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With