Ich werde eine Matrix auf ein CGImage mit Accelerate-Framework anwenden.Wie verwende ich vImageMatrixMultiply in Swift 3?
Zuerst konvertiert ich eine CGImage zu 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))
dann versucht vImageMatrixMultiply anzuwenden.
vImageMatrixMultiply_PlanarF(&inputBuffer, // srcs
&outputBuffer, // dests
3, // src_planes
3, // dest_planes
aMatrix, // applying matrix
&preBias, // pre_bias
&postBias, // post_bias
UInt32(kvImageNoFlags))
Aber vImageMatrixMultiply nicht akzeptiert vImage_Buffer als SRCs und dests Argumente, und ich bekam einen Übersetzungsfehler beschreiben:
Wert kann nicht vom Typ umwandeln "vImage_Buffer" zu erwarten Argument Typ „UnsafePointer < vImage_Buffer >? "
Ich suchte nach Umwandlung "vImage_Buffer" in "UnsafePointer < vImage_Buffer>?" aber habe keine Antwort gefunden.
Also ich würde gerne wissen, wie "vImage_Buffer" auf "UnsafePointer < vImage_Buffer>?", Konvertieren oder wie direkt erstellen "UnsafePointer < vImage_Buffer>?" von CGImage oder anderen Möglichkeiten, vImageMatrixMultiply entsprechend zu verwenden.
Sie sehr viel für den Code danken. Es ist viel komplizierter als ich dachte ... – rdeepy
@rdeepy, in der Tat habe ich sehr kleinen Teil von Accelerate Framework jemals verwendet, aber das ist schwieriger als alle anderen, die ich erlebt habe. Und wenn Sie wirklich einige Teile des obigen Codes übernehmen, sagen Sie es mir bitte. Sie brauchen etwas Fertigstellungscode nach der Verwendung ... – OOPer
Vielen Dank. Ich habe vDSP benutzt, aber es war das erste Mal, dass ich vImage nutze. Ich begann Core Image zu überprüfen und jetzt denke ich, dass CIColorMatrix meine Anforderung leichter erfüllen wird. – rdeepy