从bytedeco OpenvCV重用Mat是否安全?

问题描述

我是OpenCV包装器库的新手-https://github.com/bytedeco/javacv,不确定重新使用已经分配的Mats。 (很高兴,我们内存不足了。)

现在的代码

public double blurSignalVariance(final Image image) {
    try (Mat imgMat = Java2DFrameUtils.toMat(image.toBufferedImage());
        Mat laplacian = new Mat();
        Mat stddev = new Mat();
        Mat notUsedMedian = new Mat()) {
        ...
        opencv_imgproc.Laplacian(imgMat,laplacian,CvType.CV_64F);
        meanStdDev(laplacian,notUsedMedian,stddev);
        return Math.pow(stddev.createIndexer().getDouble(),2);
    }

我的意图:

      private Mat notUsedMedian = new Mat();
      private Mat laplacian = new Mat();
      private Mat stddev = new Mat();

public double blurSignalVariance(final Image image) {
    try (Mat imgMat = Java2DFrameUtils.toMat(image.toBufferedImage())) {
      ...
      opencv_imgproc.Laplacian(imgMat,CvType.CV_64F);
      meanStdDev(laplacian,NOT_USED_MEDIAN,stddev);
      return Math.pow(stddev.createIndexer().getDouble(),2);
    }

  public void close() throws IOException {
    try {...
    notUsedMedian.close();
    laplacian.close();
    stddev.close();
  }

我不确定在库中如何处理它,因此我的疑问在于如何分配Mat中的内存,以及是否可以将其重新用于下一个不同的图像(不需要线程安全性)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)