사용하지않는공간/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))
반응형