[swift] Core Image를 사용하여 이미지 가장자리 검출하는 방법은?

먼저 이미지를 로드하고, CIContext 및 CIFilter를 사용하여 가장자리를 검출하는 것이 일반적인 절차입니다.

아래는 Core Image를 사용하여 이미지 가장자리를 검출하는 예제 코드입니다.

import UIKit
import CoreImage

func detectEdges(in image: UIImage) -> UIImage? {
    // 1. 이미지를 CIImage로 변환합니다.
    guard let ciImage = CIImage(image: image) else { return nil } 
    
    // 2. CIContext를 생성합니다.
    let context = CIContext()
    
    // 3. CIFilter를 사용하여 가장자리를 검출합니다. 
    if let edgeFilter = CIFilter(name: "CIEdges") {
        edgeFilter.setValue(ciImage, forKey: kCIInputImageKey)
        if let edgeOutput = edgeFilter.outputImage {
            // 4. CIContext를 사용하여 결과를 이미지로 변환합니다.
            if let cgImage = context.createCGImage(edgeOutput, from: edgeOutput.extent) {
                let resultImage = UIImage(cgImage: cgImage)
                return resultImage
            }
        }
    }
    
    return nil
}

이 코드는 UIImage를 입력으로 받아 가장자리가 검출된 새로운 UIImage를 반환합니다. 이를 실행하면 가장자리가 검출된 이미지를 확인할 수 있습니다.

참고 자료:

위 코드와 설명을 통해 Core Image를 활용하여 이미지의 가장자리를 검출하는 방법에 대해 이해할 수 있을 것입니다.