2016-07-25 4 views
1

CIFaceFeature으로 얼굴 인식 작업을하는 동안 경계가있는 문제가 발생했습니다. 인식 된 얼굴 주위에 상자를 넣으려고 할 때 프레임은 항상 잘못 배치됩니다. 스택 오버플로에 대한 다른 질문은 Core Image와 UIKit 좌표계가 뒤집혀 있음을 지적합니다.CIFaceFeature Bounds

CoreImage에가

시스템를 (이러한 이미지는 https://nacho4d-nacho4d.blogspot.com/2012/03/coreimage-and-uikit-coordinates.html 출신)

분명 좌표

UIKit 좌표계이 좌표계의 차이는 프레임 오정렬 그 이유는 . 이제 x 축, 너비 및 높이가 동일하게 유지됩니다. 유일한 차이점은 y입니다. 스택 오버플로에 대한 다른 대답은 솔루션으로 (image height - face y)/2을 제안합니다. 이것은 일반적으로 작동하지만 일부 얼굴의 경우 크게 잘못되었음을 알 수 있습니다.

답변

1

첫째, image.size.height - face.bounds.origin.y를 수행하여 origin.y 설정 (2)에 의한 분할을 제거합니다. 틀의 꼭대기가 턱에 닿는 것을 볼 수 있습니다. 우리가해야 할 일은 얼굴 높이를 고려하는 것입니다.

image.size.height - face.bounds.height - face.bounds.origin.y 

이렇게하면 매번 완벽하게 정렬 된 프레임을 얻을 수 있습니다.

질문이 남아 있습니다 - 그/2 답변이 왜 잘못 되었습니까? 이 좌표 문제는 2012-2013 년의 스택 오버플로에서 인기가있었습니다. 사람들은 다음 코드로 대답 할 것입니다 : image.size.height - face.bounds.origin.y. 이전에 논의했듯이이 프레임의 윗부분이 턱에 닿습니다. 어딘가에 선을 따라, 어떤 사람들은 전체 값을 2로 나눌 것을 제안했습니다. 그것은 프레임을 꽤 잘 가운데에 배치하는 것처럼 보였습니다. 결국 꽤 많은 질문에 대한 대답이되었습니다.

제 테스트에서이 기능이 작동하는 것으로 나타났습니다. 그러나 다른 때에는 프레임이 크게 벗어날 것입니다. 약간의 생각을 한 후에 나는 올바른 대답을했습니다. 다행히도, 이것은 일을 똑바로 세우고 동일한 이슈를 가진 다른 사람들을 돕습니다.