iPhone 4上的CVFinDextrinsicCameramRams2()错误
我在OpenCV(v1.1,2.0,2.2)中发现一个错误,当使用CVFinDextrinsicCameramAparams2()方法时,它与iPhone3GS一起工作,但在iPhone4上测试时失败。错误是: “已释放对象的校验和不正确-对象可能在被释放后被修改” 我最终将大量的cvMat类型转换为浮点数,而不是双倍点数,这解决了问题,但引入了溢出的结果,给了我一些奇怪的结果 iPhone4有双倍的堆叠限制吗iPhone 4上的CVFinDextrinsicCameramRams2()错误,iphone,c,opencv,augmented-reality,Iphone,C,Opencv,Augmented Reality,我在OpenCV(v1.1,2.0,2.2)中发现一个错误,当使用CVFinDextrinsicCameramAparams2()方法时,它与iPhone3GS一起工作,但在iPhone4上测试时失败。错误是: “已释放对象的校验和不正确-对象可能在被释放后被修改” 我最终将大量的cvMat类型转换为浮点数,而不是双倍点数,这解决了问题,但引入了溢出的结果,给了我一些奇怪的结果 iPhone4有双倍的堆叠限制吗 不管怎样-只是想知道是否有人解决了这个问题?(还有-有人知道优化版本吗?我不知道您为
不管怎样-只是想知道是否有人解决了这个问题?(还有-有人知道优化版本吗?我不知道您为什么会出错,但要回答您的问题,堆栈的大小有限 在大多数系统上,
float
的大小为4字节,double
的大小为8。因此,当您使用double
表示数据时,实际使用的空间是float
的两倍
一个简单的解决方法(如果可以的话)是在堆上而不是堆栈上为cvMat分配内存。为此,请声明一个指针docvMat
,并使用new运算符为其分配空间
文档声明iOS主线程的堆栈大小为1MB,次线程为512K。您可能需要在主线程上执行核心处理。我不知道为什么会出现错误,但要回答您的问题,堆栈的大小有限 在大多数系统上,
float
的大小为4字节,double
的大小为8。因此,当您使用double
表示数据时,实际使用的空间是float
的两倍
一个简单的解决方法(如果可以的话)是在堆上而不是堆栈上为cvMat分配内存。为此,请声明一个指针docvMat
,并使用new运算符为其分配空间
文档声明iOS主线程的堆栈大小为1MB,次线程为512K。您可能需要在主线程上完成核心处理。感谢您的更新-已经完成并重构了大量OpenCV代码,但仍然遇到相同的问题。我们进一步研究了它,认为它可能与为操作线程分配了多少内存有关。需要再次检查这一点,但认为iOS v4.1的分配高于iOS v4.2+。如果是这种情况,那么我认为这应该是一个简单的解决方案,即创建一个新线程,以更大的堆栈大小处理它。仍然存在相同的问题-我现在正在寻找替代实现,以确定由于这些问题造成的姿势-一个内存需求较少的实现,因为我已经阅读了代码,并尝试尽可能多地移动到一事无成。还尝试在不同的线程上运行处理。有人知道有没有一个工具可以让我观察每个线程的堆栈使用情况吗?谢谢你的更新,我已经完成了很多OpenCV代码的重构,但是仍然遇到了同样的问题。我们进一步研究了它,认为它可能与为操作线程分配了多少内存有关。需要再次检查这一点,但认为iOS v4.1的分配高于iOS v4.2+。如果是这种情况,那么我认为这应该是一个简单的解决方案,即创建一个新线程,以更大的堆栈大小处理它。仍然存在相同的问题-我现在正在寻找替代实现,以确定由于这些问题造成的姿势-一个内存需求较少的实现,因为我已经阅读了代码,并尝试尽可能多地移动到一事无成。还尝试在不同的线程上运行处理。有人知道有没有工具可以让我观察每个线程的堆栈使用情况吗?