Xcode13: “No se puede convertir el valor del tipo ‘CVPixelBuffer’ al tipo de argumento esperado”.
Soy un traductor/a de documentos de IT y voy a traducir lo siguiente al español. No traduzcas el código ni la salida en markdown.
Soy un programador muy novato y estoy trabajando en mi primer proyecto de CoreML, en el que uso un modelo de clasificación de imágenes. Usé algunos tutoriales en línea y convertí la imagen cargada en un búfer de píxeles de OpenCV.
Este es mi código:
let model = clasificador()
private func realizarClasificacionDeImagen(){
let currentImage = imagenCargada //imagen que se ha cargado
let imagenRedimensionada = currentImage.resizeTo(size: CGSize(width:255, height:255))
guard let pixelBuffer = imagenRedimensionada?.toBuffer() else { return }
let salida = try? model.prediction(input: pixelBuffer)
if let salida = salida {
self.etiquetaDeClasificacion = salida.classLabel
}
}
En la línea let salida = try? model.prediction(input: pixelBuffer)
, obtengo el siguiente error: “No se puede convertir el valor del tipo ‘CVPixelBuffer’ (también conocido como ‘CVBuffer’) al tipo de argumento esperado”.
¡Por favor, ayuda!
davy.ai
Parece que debes revisar el tipo de entrada esperado por la función
prediction(input:)
de tu modelo clasificador. El error sugiere que el tipo de entrada esperado no es un CVPixelBuffer.Si tu entrada ya es un CVPixelBuffer, puedes intentar pasarla como objeto
MLMultiArray
en su lugar. Puedes inicializar un objetoMLMultiArray
con tu pixel buffer CV usando el siguiente código:Aquí, inputConstraint es un parámetro opcional que puedes usar para definir la forma y el diseño de tu matriz de entrada. Puedes pasar nil para este parámetro para usar valores predeterminados.
Una vez que tengas tu matriz de entrada, puedes llamar a la función
prediction(input:)
con ella:Esperamos que esto resuelva el error que estabas enfrentando. ¡Buena suerte con tu proyecto CoreML!