gpt4 book ai didi

c++ - OpenCV 导致 EXC_BAD_ACCESS 线程 1 : code=2 crashes in UIApplicationMain

转载 作者:搜寻专家 更新时间:2023-10-31 01:06:17 27 4
gpt4 key购买 nike

帮助:

它在设备上崩溃了。它在模拟器中崩溃。但它不会在 Instruments 工具中崩溃。我承认,我仍在学习如何使用 Instruments 工具,也许没有设置正确的设置来捕获错误。但是我已经为此工作了好几天,这让我发疯。我的所有代码似乎都执行得很好。我正在使用 NSNotificationCenter 进行回调。当执行返回到 View 并且数据在我的代码中设置时,数据就在那里。 当 View 即将显示新数据时出现问题。相反, View 消失并且应用程序因 EXC_BAD_ACCESS 错误而崩溃。我完全被难住了。

我对 NSZombie 如何与 Instruments 工具一起工作感到困惑。一些说明说您不能将 NSZombiesEnabled 与 Instruments 工具一起使用。我也无法成功查看日志。也许我正在尝试查看错误的日志,因为我查看的日志似乎不是人类可读的格式。

我几乎 99.9% 确信当我们开始(在 C++ 中)将 CVMat 位图转换为灰度进行处理,在 C++ 中处理图像,然后在 C++ 中转换回彩色以进行显示时,问题就开始了。但是即使在它周围放置一个 try/catch block 也没有捕获到错误。 Objective-C 中的回调接收一个 UIImage。

异步调用、多种语言、包装器、OpenCV 库、大量故障点。我相信出于多种原因,我必须成为 Instruments 工具的专家,但现在我非常渴望获得任何建议。

我现在正在阅读 Ray Wenderlich 教程,但感谢可能遇到过类似问题的其他人提供的信息。

最佳答案

我真正希望发现的是其他人在他们的代码处理完成后在汇编代码中的某处出现了这个错误,就像我遇到的那样。我无法放置任何断点,因为它似乎没有出现在我的代码中。但在耐心等待和多看了几眼之后,我终于找到了根本原因。

这是一个 OpenCV 问题!!! 我将错误缩小到发生错误的方法(这并不容易,因为它没有在那个调用上停止)但是在 将 cvMatFromUIImage 方法拆分为两种方法(一种将图像转换为 cv::Mat,另一种改变颜色)错误消失了。

- (cv::Mat)cvMatFromUIImage:(UIImage *)image
{
CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage);
CGFloat cols = image.size.width;
CGFloat rows = image.size.height;

cv::Mat cvMat(rows, cols, CV_8UC4); // 8 bits per component, 4 channels (color channels + alpha)

CGContextRef contextRef = CGBitmapContextCreate(cvMat.data, // Pointer to data
cols, // Width of bitmap
rows, // Height of bitmap
8, // Bits per component
cvMat.step[0], // Bytes per row
colorSpace, // Colorspace
kCGImageAlphaNoneSkipLast |
kCGBitmapByteOrderDefault); // Bitmap info flags

CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), image.CGImage);
CGContextRelease(contextRef);

return cvMat;
}

- (cv::Mat)convertToRGB:(cv::Mat)grayMat
{
cv::Mat rgbMat;
cv::cvtColor(grayMat, rgbMat, CV_RGBA2RGB);
return rgbMat;
}

我希望这对其他人有帮助!

关于c++ - OpenCV 导致 EXC_BAD_ACCESS 线程 1 : code=2 crashes in UIApplicationMain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21108685/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com