Swift에서 Vision Framework를 사용할때 주의할점

mystic·2023년 8월 24일
0
post-custom-banner

Swift에서 OnDevice AI를 사용하는 방법들을 공부해보던중에 발견한 에러이다.

    func detectFaces(completion: @escaping ([VNFaceObservation]?) -> ()) {
        guard let image = self.cgImage else { return completion(nil) }
        let request = VNDetectFaceRectanglesRequest()
        Task {
            let handler = VNImageRequestHandler(cgImage: image, orientation: self.cgImageOrientation)
            try? handler.perform([request])
            guard let observations = request.results else { return completion(nil) }
            completion(observations)
        }
    }

위의 코드는 이미지를 cgImage로 변환한다음 이미지에 사람의 얼굴을 찾아서 사각형을 그리는 코드이다.

이 코드는 시뮬레이터에서는 잘 작동하지 않는다. 나와 비슷한 버그를 겪은 사람들을 인터넷에 검색하면 나오는데 원인은 찾지못하였다(아마 아이폰에만 있는 하드웨어를 사용하거나 시뮬레이터에서는 Vision Framework에서 하드웨어를 사용하는 코드 부분이 구현되어있지 않은것 같다.).

원인은 찾지못하였지만 해결방안은 찾았다.
그냥 실제기기에서 실행시키면 잘 동작한다.

PS. 실제기기에서 여러가지의 프로젝트를 짧은주기로 실행시키게 되면 Build Identifier가 초과됐다는 에러가 발생하여 실행되지 않는데 그래서 여러가지 프로젝트를 생성할일이 생기면 Build Identifier를 하나로 통일하여 사용하면 된다.

profile
iOS를 좋아하는 학생
post-custom-banner

0개의 댓글