OpenCV imread () no devuelve datos de image en iOS

Estoy tratando de usar la function imread() OpenCV para cargar una image JPEG en un cv::Mat , pero falla en iOS (el mismo código funciona en OS X). La matriz devuelta se asigna y es válida, pero está vacía (es decir, no contiene datos).

¿Funcionan las funciones imread() y imwrite() en iOS?

Funciona, al less cuando guarda y carga hacia y desde el directory de documentos de su aplicación en ejecución.

 //Creating Path to Documents-Directory NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"ocv%03d.BMP", picNum]]; const char* cPath = [filePath cStringUsingEncoding:NSMacOSRomanStringEncoding]; const cv::string newPaths = (const cv::string)cPath; //Save as Bitmap to Documents-Directory cv::imwrite(newPaths, frame); 

iOS define su propio sistema de files y no creo que la interfaz imread () y imwrite () con él. Debe usar la funcionalidad nativa para cargar y save las imágenes, pero una vez que obtenga un puntero a los datos de la image, puede envolverlo en un cv :: Mat y luego procesarlo en opencv. No debería ser difícil escribir tus propias funciones cv_imread (), cv_imwrite () para iOS.

Esto funciona para mí al cargar imágenes desde el package de aplicaciones.

 NSString *path = [[NSBundle mainBundle] pathForResource:@"pattern" ofType:@"bmp"]; const char * cpath = [path cStringUsingEncoding:NSUTF8StringEncoding]; Mat img_object = imread( cpath, CV_LOAD_IMAGE_GRAYSCALE ); 

Solo pude conseguir que funcionara con bmps, jpgs y png no funcionarán por ahora en mi aplicación.

Hay una function nativa para esto.

 #import <opencv2/imgcodecs/ios.h> // t and m are UIImage* instances. // transparentImage and maskImage are destination Mat. // true/false is alpha condition. UIImageToMat(t, transparentImage, true); UIImageToMat(m, maskImage, true); 

Intente cambiar los Compress PNG Files - Packaging Configuración de Compress PNG Files - Packaging a No

  1. Build Settings objectives Build Settings
  2. Buscar png
  3. Cambiar los Compress PNG Files a No
  4. Cambiar Remove Text Metadata From PNG Files a No