我想检测球并让 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
. 但在此之前我想知道:
- 如果有其他方法可以转换正确方向的图像?
- 为什么会这样?