【发布时间】:2018-01-14 00:12:21
【问题描述】:
我正在尝试查找图像中最大的 blob 并根据链接的 plist 文件对其进行分类。我正在使用适用于 iOS 的最新版本的 OpenCV,我已经查看了几个相关的问题,但到目前为止没有一个与 iOS 相关。
我收到此错误:
OpenCV 错误:断言失败 (type == src2.type() && src1.cols == src2.cols && (type == CV_32F || type == CV_8U)) 在 batchDistance,文件 /Users/admin/Desktop /OpenCV/modules/core/src/stat.cpp,第 4000 行
libc++abi.dylib:以 cv::Exception 类型的未捕获异常终止:/Users/admin/Desktop/OpenCV/modules/core/src/stat.cpp:4000: error: (-215) type = = src2.type() && src1.cols == src2.cols && (type == CV_32F || type == CV_8U) in function batchDistance
当我运行这个时:
- (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
这里有什么问题?
【问题讨论】:
-
对所列属性之一的断言失败。找出哪一个,为什么并解决它。你知道调试器是什么吗?
-
@Piglet 是的,但我不确定如何找到导致错误的属性。
-
您可以在 stat.cpp 中的第 3934 行之前添加一个断点并查看值。
-
@Piglet 问题是 stat.cpp 不在这个 Xcode 项目中;它与 OpenCV 框架位于同一目录中。当我在相关行上放置断点时,什么也没有发生,因为它们不在同一个项目中。
标签: ios objective-c opencv image-processing