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
Android 加载新的垫架会导致内存增加_Android_Opencv_Memory Management_Mat - Fatal编程技术网

Android 加载新的垫架会导致内存增加

Android 加载新的垫架会导致内存增加,android,opencv,memory-management,mat,Android,Opencv,Memory Management,Mat,下面的代码用于为我们从视频捕获中获得的每一帧分配新的Mat帧 Sample sample; extern "C" JNIEXPORT void JNICALL Java_com_example_flow_NativeBridge_detect( JNIEnv* env, jobject obj, jlongArray frameAddresses) { std::vector<Mat> frames; j

下面的代码用于为我们从视频捕获中获得的每一帧分配新的Mat帧

 Sample sample;
 extern "C" JNIEXPORT void JNICALL
 Java_com_example_flow_NativeBridge_detect(
    JNIEnv* env,
    jobject obj,
    jlongArray frameAddresses) {

       std::vector<Mat> frames;
       jsize len = (*env).GetArrayLength(frameAddresses);
       long *_frameAddresses = (*env).GetLongArrayElements(frameAddresses, 0); 
       for(int i = 0; i < len; i++){
       Mat& temp = *(cv::Mat *) _frameAddresses[i];
           frames.push_back(temp.clone());
       }
       sample.loadFrames(frames);
 }
样本;
外部“C”JNIEXPORT void JNICALL
Java\u com\u示例\u流\u本地桥\u检测(
JNIEnv*env,
jobject obj,
jlong(阵列帧地址){
向量帧;
jsize len=(*env).GetArrayLength(帧地址);
长*帧地址=(*env).GetLongArrayElements(帧地址,0);
对于(int i=0;i
示例类加载框代码:

void Sample::loadFrames(vector<Mat> &frames){
   for(int i = 0; i < frames.size(); i++){
       resize(frames[i], resized_frames[i], m_resize_frame_size);
       orig_frames[i] = frames[i];
   }
}
void示例::加载帧(向量和帧){
对于(int i=0;i

使用sample.loadFrames(frames)调用,内存每2分钟逐渐增加0.1 MB。请帮助解决此问题,是否有其他方法可以存储新的帧数据而不会导致内存泄漏。

是否在某处删除
Mat
对象?你能告诉我怎么做吗?此外,如果您可以显示正在处理的映像的范围(生存期)(创建位置、删除位置或超出范围),也会有所帮助。