Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MatToUIImage由于内存压力而终止了我的应用程序_Ios_Opencv_Uiimage_Reference Counting - Fatal编程技术网

Ios MatToUIImage由于内存压力而终止了我的应用程序

Ios MatToUIImage由于内存压力而终止了我的应用程序,ios,opencv,uiimage,reference-counting,Ios,Opencv,Uiimage,Reference Counting,我正在使用opencv,希望在处理图像时显示图像。 我的问题是,当我使用MatToUIImage时,内存使用量急剧增加,以至于我的应用程序崩溃 但我在这里还能做什么图像是视图控制器的成员,且未在方法中实例化。 也许这与processImage作为opencv的委托方法有关 - (void)processImage:(cv::Mat&)img { image = img; testImage = MatToUIImage(image); } 答复最后两项评论: AFAIK引用

我正在使用opencv,希望在处理图像时显示图像。
我的问题是,当我使用
MatToUIImage
时,内存使用量急剧增加,以至于我的应用程序崩溃

但我在这里还能做什么<代码>图像是视图控制器的成员,且未在方法中实例化。
也许这与
processImage
作为opencv的委托方法有关

- (void)processImage:(cv::Mat&)img
{
   image = img;
   testImage = MatToUIImage(image);
}

答复最后两项评论:


AFAIK引用计数和释放指针内存是不同的事情。如果不释放指针,则其引用不会减少,也不会从内存中清除。不管怎样,您都需要释放指针。

我不熟悉iOS上的OpenCV。测试图像的类型是什么?类型是UIImage。可能是iOS和OpenCV组合中的错误。我在某处看到签名是
UIImage*MatToUIImage(const cv::Mat&m)
,因此
testImage
是一个指针。你是否适当地释放了这个指针,特别是在每一帧分配指针的情况下?好吧,iOS有自动引用计数,所以我不需要这样做。我不明白这里需要做什么。我也遇到了同样的问题。有了ARC,我无法完成[image release]。请阅读此内容,如果您再次阅读答案,就会非常清楚。如果您正在创建指针,而指针是在堆中创建的,则需要显式删除它们。或者,如果你正在堆栈上创建图像,那么它们将在没有任何引用后被删除。我发现了,我不知道怎么会错过它。我只需要在代码周围包装一个@autoreleasepool{}。我多次使用@autoreleasepool,我不知道为什么它没有点击使用它@autoreleasepool是一个救星!过于乐观的是,将评论推广到答案可能是有意义的。