我想检测球,并且让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
来处理它。但在此之前,我想知道:
- 是否有其他方法可以转换具有正确方向的图像?
- 为什么会发生这种情况?