1

Swiftアクセラレータ機能を使用してiOSで画像をサンプリングするためのテーブルを作成する次のコードがあります

元の型である Int からテーブル作成が期待する UInt16 にメモリをリバインドすると、致命的なエラーが発生します。

var arr = Array<Float>(repeating: 0, count: 163840)

arr.withUnsafeBufferPointer{
    arr_pointer in do {
         arr_pointer.withMemoryRebound(to: UInt16.self){ // This causes a FATAL ERROR
             arr_r_pointer in do {
                 let table = vImageMultidimensionalTable_Create( arr_r_pointer.baseAddress!,
                            3, 3, dims_r_pointer.baseAddress!, kvImageMDTableHint_Float, 
                            vImage_Flags(kvImageNoFlags), nil )                          
                 vImageMultiDimensionalInterpolatedLookupTable_PlanarF( &srcBuffer,
                                       &destBuffer,nil,table!,
                                       kvImageFullInterpolation,
                                      vImage_Flags(kvImageNoFlags))
             }
        }
    }
}

誰かがここで私の間違いを指摘できますか?

4

2 に答える 2

0

arrの配列はFloats の配列です

var arr = Array<Float>(repeating: 0, count: 163840)

しかし、ポインタをにバインドしようとしていますUInt16

arr_pointer.withMemoryRebound(to: UInt16.self)
于 2018-08-29T16:48:56.177 に答える