void cv::Canny(
    Mat image,
    Mat edges,
    double threshold1,
    double threshold2,
    int apertureSize = 3,
    bool L2gradient = false
)
void Cv2.Canny(
    Mat src,
    Mat edges,
    double threshold1,
    double threshold2,
    int apertureSize = 3,
    bool L2gradient = false
)
edges = cv2.Canny(
    image,
    threshold1,
    threshold2
    apertureSize = None,
    L2gradient = None
)


1. 노이즈 제거를 위해 가우시안 필터를 사용해 흐림 효과를 적용합니다.
2. 기울기(Gradient) 값이 높은 지점을 검출합니다.(소벨 마스크 적용)
3. 최댓값이 아닌 픽셀의 값을 0으로 변경합니다.(명백하게 가장자리가 아닌 값을 제거)
4. 히스테리시스 임곗값(hysteresis threshold) 적용합니다.
노름 계산식(Norm Formula): $$ L_1 = | \frac{dI}{dx} | + | \frac{dI}{dy} | $$ $$ L_2 = \sqrt{(\frac{dI}{dx})^2 + (\frac{dI}{dy})^2} $$


요약(Summary)

입력 이미지의 X와 Y에 대해 1차 미분을 계산한 다음, 네 방향으로 미분합니다.

매개변수(Parameter)

입력 이미지(src) 캐니를 적용하려는 입력 이미지

출력 이미지(edges) 캐니가 적용된 이미지

하위 임곗값(threshold1) 히스테리시스 하위 임곗값

상위 임곗값(threshold2) 히스테리시스 상위 임곗값

마스크 크기(apertureSize) 소벨 연산자의 마스크 크기

L2 그레이디언트(L2gradient) L2 그레디이언트 사용 유/무

반환값(Returns)

출력 이미지(edges) 캐니가 적용된 이미지