私は、Accelerateフレームワークを使用してCGImageに行列を適用します。Swift 3でvImageMatrixMultiplyを使用するには?
まず、私はvImageMatrixMultiplyを適用しようとした後、
、vImage_Bufferに
let bitmapInfo: CGBitmapInfo = [ .floatComponents,
CGBitmapInfo(rawValue: CGImageAlphaInfo.none.rawValue),
.byteOrder32Little ]
var format = vImage_CGImageFormat(bitsPerComponent: 32,
bitsPerPixel: 32 * 3,
colorSpace: nil,
bitmapInfo: FloatBitmapInfo,
version: 0,
decode: nil,
renderingIntent: .defaultIntent)
var inputBuffer = vImage_Buffer()
vImageBuffer_InitWithCGImage(&inputBuffer,
&format,
nil,
aCGImage, // input CGImage
UInt32(kvImageNoFlags))
をCGImageを変換します。
vImageMatrixMultiply_PlanarF(&inputBuffer, // srcs
&outputBuffer, // dests
3, // src_planes
3, // dest_planes
aMatrix, // applying matrix
&preBias, // pre_bias
&postBias, // post_bias
UInt32(kvImageNoFlags))
しかしvImageMatrixMultiplyはSRCSとしてvImage_Bufferを受け入れ、引数をdests、そして私が記述したコンパイルエラー持っていないん
が期待される引数の型「UnsafePointer < vImage_Bufferに型の値「vImage_Buffer」を変換できません。 >? "
"vImage_Buffer"を "UnsafePointer < vImage_Buffer>に変換しましたか?"答えは見つかりませんでした。
は、だから私は "?> UnsafePointer < vImage_Buffer" "vImage_Buffer" に変換する方法を知りたい、または直接作成する方法 "> UnsafePointer < vImage_Bufferの?" CGImageから、またはvImageMatrixMultiplyを適切に使用するその他の方法
をコードするためにありがとうございました。それは私が思っていたよりもはるかに複雑です... – rdeepy
実際には、私はAccelerateフレームワークの非常に小さな部分を使っていますが、これは私が経験した他のものよりも難しいです。上記のコードの一部を実際に採用している場合は、教えてください。あなたはそれを使用した後にいくつかの仕上げコードが必要です... – OOPer
ありがとうございます。私はvDSPを使いましたが、私がvImageを使うのは初めてです。私はCore Imageをチェックし始めました.CIColorMatrixが私の要求をより簡単に満たすと思っています。 – rdeepy