问题描述
我是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 (将#修改为@)