关于Apple的WWDC 2017 Session 506中的代码摘录 - exifOrientationFromDeviceOrientation()在哪里定义?

时间:2017-09-25 20:27:12

标签: ios swift wwdc apple-vision

来自会话506的WWDC 2017视频。第一个演示中的一段代码如下所示:

let exifOrientation = self.exifOrientationFromDeviceOrientation()

使用自我。表示它应该是ViewController的属性。鉴于此 exifOrientationFromDeviceOrientation()方法并不存在于UIViewController类中,我认为ViewController符合授予该功能的协议。有人可以指出哪个协议?

4 个答案:

答案 0 :(得分:0)

我强烈建议您查看https://github.com/yulingtianxia/Core-ML-Sample/blob/master/CoreMLSample/ViewController.swift,它是GitHub上Core-ML-Sample项目的一部分。

var exifOrientationFromDeviceOrientation: Int32 {
    let exifOrientation: DeviceOrientation
    enum DeviceOrientation: Int32 {
        case top0ColLeft = 1
        case top0ColRight = 2
        case bottom0ColRight = 3
        case bottom0ColLeft = 4
        case left0ColTop = 5
        case right0ColTop = 6
        case right0ColBottom = 7
        case left0ColBottom = 8
    }
    switch UIDevice.current.orientation {
    case .portraitUpsideDown:
        exifOrientation = .left0ColBottom
    case .landscapeLeft:
        exifOrientation = .top0ColLeft
    case .landscapeRight:
        exifOrientation = .bottom0ColRight
    default:
        exifOrientation = .right0ColTop
    }
    return exifOrientation.rawValue
}

干杯!

答案 1 :(得分:0)

比这更糟糕。它指的是在他们应用程序的UIViewController()子类中的一个函数。我无法在WWDC样本的任何地方找到此应用程序的副本 - 我不认为它们包含它。

但是,这个项目似乎有一个等价物:

https://github.com/yulingtianxia/Core-ML-Sample/blob/master/CoreMLSample/ViewController.swift#L107

答案 2 :(得分:0)

您指的是此代码posted here

他们在代码中创建变量:

var exifOrientationFromDeviceOrientation: Int32 {
    let exifOrientation: DeviceOrientation
    enum DeviceOrientation: Int32 {
        case top0ColLeft = 1
        case top0ColRight = 2
        case bottom0ColRight = 3
        case bottom0ColLeft = 4
        case left0ColTop = 5
        case right0ColTop = 6
        case right0ColBottom = 7
        case left0ColBottom = 8
    }
    switch UIDevice.current.orientation {
    case .portraitUpsideDown:
        exifOrientation = .left0ColBottom
    case .landscapeLeft:
        exifOrientation = .top0ColLeft
    case .landscapeRight:
        exifOrientation = .bottom0ColRight
    default:
        exifOrientation = .right0ColTop
    }
    return exifOrientation.rawValue
}

答案 3 :(得分:0)

请查看Apple的“ Training a Create ML Model to Classify Flowers”。相关代码应适用于iOS12.x。

我使用了此线程中发布的代码,但没有意识到它们不正确(或不再正确)。仅在开始测试绘制边界框和分类的图像本地化模型时,我才检测到此问题。因此,如果您遇到同样的麻烦,则可以尝试更改代码。

我将返回分类模型,以查看准确性是否有所提高。我的预期对象具有旋转不变性,因此我不希望它有太大变化。但是,对于所有方向明确的模型,如果未正确地进行定向,则精度可能会下降。