Я хочу обнаружить мяч и заставить модель AR взаимодействовать с ним. Я использовал opencv для обнаружения мяча и отправки центра мяча, который я могу использовать в hitTest
, чтобы получить координаты в sceneView
. Я конвертировал CVPixelBuffer
в UIImage
, используя следующую функцию:
static func convertToUIImage(buffer: CVPixelBuffer) -> UIImage?{
let ciImage = CIImage(cvPixelBuffer: buffer)
let temporaryContext = CIContext(options: nil)
if let temporaryImage = temporaryContext.createCGImage(ciImage, from: CGRect(x: 0, y: 0, width: CVPixelBufferGetWidth(buffer), height: CVPixelBufferGetHeight(buffer)))
{
let capturedImage = UIImage(cgImage: temporaryImage)
return capturedImage
}
return nil
}
Это дало мне повернутое изображение:
Затем я узнал об изменении ориентации с помощью:
let capturedImage = UIImage(cgImage: temporaryImage, scale: 1.0, orientation: .right)
Хотя он дал правильную ориентацию, когда устройство было в портретной ориентации, поворот устройства в альбомную ориентацию снова дал повернутое изображение.
Теперь думаю о том, чтобы справиться с этим с помощью viewWillTransition
. Но перед этим я хочу знать:
- Есть ли другой способ конвертировать изображение с правильной ориентацией?
- Почему это происходит?