微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从bytedeco OpenvCV重用Mat是否安全?

如何解决从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 举报,一经查实,本站将立刻删除。