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)
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.