Android 加载新的垫架会导致内存增加
下面的代码用于为我们从视频捕获中获得的每一帧分配新的Mat帧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
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
对象?你能告诉我怎么做吗?此外,如果您可以显示正在处理的映像的范围(生存期)(创建位置、删除位置或超出范围),也会有所帮助。