参数值在Android中自动更改

时间:2014-08-12 17:56:20

标签: android multithreading

我在android中遇到以下问题:

在我的项目中,有一个参数" CMat"这是从活动开始时的文件加载的。然后在系统从相机获取帧时有一个线程,有一个线程使用此CMat对相机捕获的图像进行一些计算。在这个线程中,我尝试跟踪CMat的大小并输出它。几次输出后,它的大小突然改变(显示如下),我的应用程序崩溃(致命信号11 sigsegv在某个内存位置)。

08-12 13:44:32.868: I/CMat(21267): 128x500
08-12 13:44:35.061: I/CMat(21267): 128x500
08-12 13:44:37.343: I/CMat(21267): 128x500
08-12 13:44:39.565: I/CMat(21267): 128x500
08-12 13:44:41.788: I/CMat(21267): 128x500
08-12 13:44:44.240: I/CMat(21267): 0x0    // sometimes it would turn to a very big size

有谁知道为什么?

构建OpenCV Mat类:

我尝试使用一个线程从文件加载,在这个线程中,我首先加载它并将其地址传递给处理程序。在处理程序中,我用这个地址重建CMat。

//in load file thread:
Mat centerMat = FileIO.ReadMat(path+"center.txt"); 
Bundle bundle = new Bundle();
bundle.putLong("centerAddr", centersMat.nativeObj);
msg.setData(bundle);
msg.what = Data_prepare;
Eventhandler.sendMessage(msg);
// in handler:
if (msg.what == Data_prepare) {
CMat = new Mat((long) msg.getData().getLong("centerAddr"));
// in Camera thread
double[] feature = extract(rgba, CMat); // my function to extract feature. I don't change the CMat in my function

0 个答案:

没有答案