ios objective-c opencv image-processing

Error de OpenCV: la aserción falló en iOS



objective-c image-processing (1)

Intento encontrar el blob más grande en una imagen y clasificarlo según un archivo plist vinculado. Estoy usando la última versión de OpenCV para iOS, y he analizado varias preguntas relacionadas, pero ninguna se relaciona con iOS.

Me aparece este error:

Error de OpenCV: la aserción falló (tipo == src2.type () && src1.cols == src2.cols && (tipo == CV_32F || tipo == CV_8U)) en batchDistance, archivo / Users / admin / Desktop / OpenCV / modules / core / src / stat.cpp, línea 4000

libc ++ abi.dylib: terminando con excepción no detectada de tipo cv :: Excepción: /Users/admin/Desktop/OpenCV/modules/core/src/stat.cpp:4000: error: (-215) tipo == src2. type () && src1.cols == src2.cols && (type == CV_32F || type == CV_8U) en la función batchDistance

cuando ejecuto esto:

- (IBAction)CaptureButton:(id)sender { // Find the biggest blob. int biggestBlobIndex = 0; for (int i = 0, biggestBlobArea = 0; i < detectedBlobs.size(); i++) { Blob &detectedBlob = detectedBlobs[i]; int blobArea = detectedBlob.getWidth() * detectedBlob.getHeight(); if (blobArea > biggestBlobArea) { biggestBlobIndex = i; biggestBlobArea = blobArea; } } Blob &biggestBlob = detectedBlobs[biggestBlobIndex]; // Classify the blob. blobClassifier->classify(biggestBlob); // the error occurs here }

classify que estoy llamando en la última línea que se declaró en otro archivo:

void classify(Blob &detectedBlob) const;

Este es el código relevante de stat.cpp:

Mat src1 = _src1.getMat(), src2 = _src2.getMat(), mask = _mask.getMat(); int type = src1.type(); CV_Assert( type == src2.type() && src1.cols == src2.cols && (type == CV_32F || type == CV_8U)); // this is line 4000

¿Cuál es el problema aquí?


No sé cómo se ven los objetos cv :: Mat en el objetivo c, pero debe asegurarse de que todas las dimensiones, el número de canal y la profundidad de las imágenes utilizadas con el clasificador sean uniformes. Probablemente hubo un paso anterior cuando alimentaste al clasificador con imágenes de entrenamiento. Tal vez uno de ellos no sea compatible con la estera que estás tratando de clasificar.

Puede probar la depuración con opencv si lo compila usted mismo y configura la versión de depuración en CMake.