Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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

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
java opencv错误内存不足,断言失败_Java_Opencv_Memory - Fatal编程技术网

java opencv错误内存不足,断言失败

java opencv错误内存不足,断言失败,java,opencv,memory,Java,Opencv,Memory,我正在用java开发一个程序,该程序使用opencv库获取一个文件夹中的图像,并仅裁剪人脸。它使用opencv中的人脸识别。我让它工作了,但当我尝试使用一个较大的图像文件夹时,它会因以下错误而停止: OpenCV错误:cv::OutOfMemoryError文件C:\builds\master\u PackSlaveAddon-win32-vc12-static\OpenCV\modules\core\src\alloc.cpp中内存不足(无法分配411068928字节),第52行OpenCV错

我正在用java开发一个程序,该程序使用opencv库获取一个文件夹中的图像,并仅裁剪人脸。它使用opencv中的人脸识别。我让它工作了,但当我尝试使用一个较大的图像文件夹时,它会因以下错误而停止:

OpenCV错误:cv::OutOfMemoryError文件C:\builds\master\u PackSlaveAddon-win32-vc12-static\OpenCV\modules\core\src\alloc.cpp中内存不足(无法分配411068928字节),第52行OpenCV错误:cv::Mat::create文件C:\builds\master\u PackSlaveAddon-win32-vc12-static\OpenCV\modules\core\src\matrix.cpp中的断言失败(u!=0),线程“main”CvException[org.opencv.core.CvException:cv::Exception:C:\builds\master\u PackSlaveAddon-win32-vc12-static\opencv\modules\core\src\matrix.cpp:411:错误:(-215)u!=0,在org.opencv.objdetect.CascadeClassifier.detectMultiScale\u 1(本机方法)位于org.opencv.objdetect.CascadeClassifier.detectMultiScale(CascadeClassifier.java:103),位于FaceDetector.main(FaceDetector.java:42)

导入java.awt.image.buffereImage;
导入java.awt.image.DataBufferByte;
导入java.io.File;
导入java.io.IOException;
导入javax.imageio.imageio;
导入javax.swing.plaf.synth.SynthSeparatorUI;
导入org.opencv.core.core;
导入org.opencv.core.CvType;
导入org.opencv.core.Mat;
导入org.opencv.core.MatOfRect;
导入org.opencv.core.Point;
导入org.opencv.core.Rect;
导入org.opencv.core.Scalar;
导入org.opencv.imgcodecs.imgcodecs;
导入org.opencv.imgproc.imgproc;
导入org.opencv.objdetect.CascadeClassifier;
公共类人脸检测器{
公共静态void main(字符串[]args)引发IOException{
System.loadLibrary(Core.NATIVE\u LIBRARY\u NAME);
System.out.println(“\n运行面检测器”);
CascadeClassifier faceDetector=新的CascadeClassifier(“C:/Users/Family/workspace/detect face/haarcascade_frontalface_alt.xml”);
文件夹=新文件(“C:\\Users\\Family\\Downloads\\Photos(4)”;
File[]listOfFiles=folder.listFiles();
对于(int j=0;j
您是否尝试增加堆空间?看一看。


java.lang.OutOfMemoryError:当应用程序试图向堆空间区域添加更多数据,但没有足够的空间时,会触发java堆空间错误。

您也应该释放
图像
对象。我想建议使用try-catch-finally进行适当的发布

image.release();

我这样做了,程序比上次运行得更远,但它在同一个错误处停止。我只想尝试使用少量的图像。这没有任何作用。如果循环计数可以被一些数字(如5或10)整除,您可能需要调用System.gc()。您还需要释放Imgcodecs.imread加载的Mat对象。
image.release();