我试图找到图片中最大的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
这里的问题是什么?
答案 0 :(得分:2)
我不知道cv :: Mat对象在目标c中的外观如何,但您需要确保分类器使用的所有尺寸,通道数和图像深度均匀。当您为分类器提供训练图像时,可能之前有一个步骤。也许其中一个与您尝试分类的垫子不兼容。
如果您自己编译并在CMake中设置调试版本,可以尝试使用opencv进行调试。