Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/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
Java 如何释放';从函数返回什么?_Java_Android_Opencv_Mat - Fatal编程技术网

Java 如何释放';从函数返回什么?

Java 如何释放';从函数返回什么?,java,android,opencv,mat,Java,Android,Opencv,Mat,如果在一个函数中我创建了一个新的Mat,然后我返回了那个Mat,那个Mat对象什么时候会被释放 假设我有这个示例函数: Mat sampleFunction(Mat frameHSV) { Mat filtered2 = new Mat(); // create a new Mat object Mat frameRGB = new Mat(); // create a new Mat object Imgproc.cvtColor(frameHSV,

如果在一个函数中我创建了一个新的Mat,然后我返回了那个Mat,那个Mat对象什么时候会被释放

假设我有这个示例函数:

    Mat sampleFunction(Mat frameHSV) {
    Mat filtered2 = new Mat();  // create a new Mat object 
    Mat frameRGB = new Mat();    // create a new Mat object
    Imgproc.cvtColor(frameHSV, frameRGB, Imgproc.COLOR_HSV2RGB); // convert to RGB

    Core.subtract(frameRGB, frameHSV, filtered2); // subtract Mats, just a made up operation here
    frameRGB.release(); // release the RGB mat to clear up memory
    return filtered2;
    }
所以我传入frameHSV,然后在示例函数中创建两个Mats-filtered2和frameRGB。FrameRGB在函数结束时释放,但Filtered2返回,因此从未释放


如何释放过滤器2?还是在我归还垫子时自动释放?

这是一个愚蠢的问题,但谢谢你塞尔文的快速回答

正如Selvin所说,只需释放调用的结果

  result = sampleFunction(frameHSV)
  result.release()  // releases the Mat that was returned from the function

如果我错了,请纠正我,但
Mat
应在函数调用完成后自动释放。因为变量
filtered2的生存期在函数调用后结束。

?显然是这样的:
matframehsv=newmat();Mat结果=采样功能(FRAMESHSV);使用(结果);frameHSV.release();result.release()
result.release()
将发布
filtered2
作为
result==filtered2
D'oh-我觉得很傻。出于某种原因,我没有意识到Mat只是要从函数中传递回来。谢谢你把它清理干净