OpenCV Android应用程序停止,但没有错误消息
我使用OpenCV库及其Java包装器开发了一个跟踪彩色球的应用程序。 几分钟后,我的应用程序关闭,没有任何错误消息。 logcat和调试器都没有向我显示任何相关消息。 此外,每次收盘似乎都是随机发生的 在分析了我的应用程序的内存使用情况后,我发现MatOfPoint.toArray()方法产生了大约97%的数据。 但是,如果我的应用程序内存不足,就会出现错误消息。 有可能避免这种方法吗 这是每帧执行的唯一方法OpenCV Android应用程序停止,但没有错误消息,android,opencv,Android,Opencv,我使用OpenCV库及其Java包装器开发了一个跟踪彩色球的应用程序。 几分钟后,我的应用程序关闭,没有任何错误消息。 logcat和调试器都没有向我显示任何相关消息。 此外,每次收盘似乎都是随机发生的 在分析了我的应用程序的内存使用情况后,我发现MatOfPoint.toArray()方法产生了大约97%的数据。 但是,如果我的应用程序内存不足,就会出现错误消息。 有可能避免这种方法吗 这是每帧执行的唯一方法 @Override public Mat onCameraFrame(CameraB
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
mRgba = inputFrame.rgba();
Imgproc.resize(mRgba, mRgbaF, mRgbaF.size(), 0, 0, 0);
Core.flip(mRgbaF, mRgba, -1);
if(mRgba.channels()>1)
Imgproc.cvtColor(mRgba, smHsv, Imgproc.COLOR_RGB2HSV_FULL);
else smHsv = mRgba;
Core.inRange(smHsv, mLowerBound, mUpperBound, mMask);
contours.clear();
Imgproc.findContours(mMask.clone(), contours, mHistory, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
if(contours.size() > 0){
MatOfPoint largestContour = new MatOfPoint();
double max = 0;
for(MatOfPoint m: contours){
double tmp = Imgproc.contourArea(m);
if(tmp > max) {
max = tmp;
largestContour = m;
}
}
points = largestContour.toArray();
Point center = new Point();
float[] radius = new float[1];
if(!largestContour.empty()) {
Imgproc.minEnclosingCircle(new MatOfPoint2f(points), center, radius);
}
return mRgba;
}
是否有我遗漏的任何内容,或者是否有办法获取系统的所有错误消息?
我做错了什么
完整代码可在此处找到: