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)
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.
cv2.arcLength()
is used to calculate the perimeter of the contour. If the second argument is True
then it considers the contour to be closed. Then this perimeter is used to calculate the epsilon value for cv2.approxPolyDP()
function with a precision factor for approximating a shape. You can look into the link: opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/… where it is explained. There is also a link to the wiki for Douglas-Peucker algorithm behind cv2.approxPolyDP() method. –
Papilloma © 2022 - 2024 — McMap. All rights reserved.