사용하지않는공간/openCV
[openCV] 컨투어 근사화
반나무
2021. 5. 5. 22:49
근사화 : 점이 많은데 좀 단순화 시키는것
cv2.approxPolyDP(curve, epsilon, closed, approxCurve=None)
- curve : 입력 곡선 좌표 - 컨투어 좌표
- epsilon : 근사화 정밀도 조절
- closed : True를 전달하면 폐곡선으로 간주
return approxCurve : 근사화된 곡선 좌표
# 모든 외곽선을 검사하는데
for pts in contours:
# 특정 외곽선에 의해 구성되는 면적이 1000보다 작다면 (1000은 생각보다 작음)
if cv2.contourArea(pts) < 1000:
continue
# 사각형만 그림을 그려라
approx = cv2.approxPolyDP(pts, cv2.arcLength(pts, True)*0.02, True)
if len(approx) != 4:
continue
# 구한 컨투어로 명함 사이즈로 만들기
w, h = 900,500 # 명함 사이즈
srcQuad = np.array([[approx[0,0, :]],[approx[1,0, :]],
[approx[2,0, :]],[approx[3,0, :]]]).astype(np.float32)
dstQuad = np.array([[0,0], [w,0], [w,h], [0,h]]).astype(np.float32)
pers = cv2.getPerspectiveTransform(srcQuad, dstQuad)
dst = cv2.warpPerspective(src,pers, (w,h))
cv2.polylines(src, pts, True, (0, 0, 255))
반응형