OpenCV错误:iOS

时间:2017-08-06 16:34:35

标签: ios objective-c opencv image-processing

我试图找到图片中最大的blob,并根据链接的plist文件对其进行分类。我使用的是最新版本的OpenCV for iOS,我已经查看了几个相关问题,但到目前为止还没有涉及iOS。

我收到此错误:

  

OpenCV错误:断言失败(类型== src2.type()&& src1.cols == src2.cols&&(type == CV_32F || type == CV_8U))batchDistance,file /Users/admin/Desktop/OpenCV/modules/core/src/stat.cpp,第4000行

     

libc ++ abi.dylib:以cv类型的未捕获异常终止::异常:/Users/admin/Desktop/OpenCV/modules/core/src/stat.cpp:4000:错误:(-215)type = = src2.type()&& src1.cols == src2.cols&& (函数batchDistance

中的(type == CV_32F || type == CV_8U)

当我运行时:

- (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已在另一个文件中声明:

void classify(Blob &detectedBlob) const;

这是来自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

这里的问题是什么?

1 个答案:

答案 0 :(得分:2)

我不知道cv :: Mat对象在目标c中的外观如何,但您需要确保分类器使用的所有尺寸,通道数和图像深度均匀。当您为分类器提供训练图像时,可能之前有一个步骤。也许其中一个与您尝试分类的垫子不兼容。

如果您自己编译并在CMake中设置调试版本,可以尝试使用opencv进行调试。