es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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!

Tags:  , , ,

Answer

  1. Avatar for 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 objeto MLMultiArray con tu pixel buffer CV usando el siguiente código:

    guard let inputArray = try? MLMultiArray(pixelBuffer: pixelBuffer, imageConstraint: inputConstraint) else { return }
    

    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:

    let output = try? model.prediction(input: inputArray)
    

    Esperamos que esto resuelva el error que estabas enfrentando. ¡Buena suerte con tu proyecto CoreML!

Comments are closed.