[swift] 이미지 윤곽선 추출하기

이미지 처리는 모바일 앱 개발에서 중요한 부분 중 하나입니다. 이미지에 있는 윤곽선을 추출하는 것은 그 중에서도 흥미로운 주제입니다. 이번 블로그 포스트에서는 Swift로 이미지의 윤곽선을 추출하는 방법에 대해 알아보겠습니다.

OpenCV 설치하기

OpenCV는 이미지 처리를 위한 강력한 오픈 소스 라이브러리입니다. Swift에서 OpenCV를 사용하기 위해서는 CocoaPods를 사용하여 프로젝트에 OpenCV를 추가해야 합니다. 아래는 CocoaPods를 사용하여 OpenCV를 설치하는 방법입니다.

  1. 터미널을 열고 프로젝트 폴더로 이동합니다.

  2. Podfile이라는 파일을 생성하고 다음 내용을 추가합니다:

    platform :ios, '9.0'
    
    target 'YourProjectName' do
      use_frameworks!
      pod 'OpenCV2'
    end
    
  3. 터미널에 pod install 명령어를 실행하여 OpenCV를 설치합니다.

  4. Xcode에서 .xcworkspace 파일을 열어 프로젝트를 실행합니다.

이미지 윤곽선 추출하기

이제 OpenCV를 설치했으니 이미지의 윤곽선을 추출하는 코드를 작성해보겠습니다.

import UIKit
import OpenCV2

func findContours(in image: UIImage) -> UIImage? {
    guard let inputImage = image.cvPixelBuffer() else {
        return nil
    }
    
    var grayImage = inputImage.toGray()
    var contours = grayImage.findContours()
    
    var drawing = inputImage.drawContours(contours: &contours,
                                          color: CVColor.green,
                                          thickness: 2)
    
    return drawing.toUIImage()
}

위 코드를 간략히 설명하면 다음과 같습니다:

  1. UIImagecvPixelBuffer로 변환하여 OpenCV에서 처리할 수 있는 형식으로 변환합니다.

  2. 변환된 이미지를 흑백 이미지로 변환합니다.

  3. 흑백 이미지에서 윤곽선을 검출합니다.

  4. 원본 이미지 위에 검출된 윤곽선을 그립니다.

마지막으로, findContours 함수를 호출하여 이미지의 윤곽선을 추출하고, 추출된 윤곽선이 그려진 이미지를 반환합니다.

사용법

위에서 작성한 코드를 사용하여 이미지 윤곽선을 추출하려면 다음과 같이 호출하면 됩니다:

let inputImage = UIImage(named: "inputImage")
let outputImage = findContours(in: inputImage)

이렇게하면 inputImage에 있는 이미지의 윤곽선이 추출되어 outputImage로 반환됩니다.

결론

Swift를 사용하여 이미지의 윤곽선을 추출하는 방법을 살펴보았습니다. OpenCV를 설치하고 코드를 작성하여 이미지 처리를 할 수 있게 되었습니다. 이미지 처리에 대한 보다 깊은 이해를 위해 OpenCV 공식 문서와 튜토리얼 자료를 참고하시기 바랍니다.