Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

App crash when using solvePnP on Android

Hi, I use OpenCV on Andoid. I can use it for face detection. But when I use it for solvePnp, the app crash. The code looks as follows:

Mat mCameraMatrix = new Mat(3, 3, CvType.CV_64FC1); //assign values to mCameraMatrix, not real calibration results

mImagePoints = new MatOfPoint2f();

List<point> imgPoints = new ArrayList<point>(); imgPoints.add(new Point(mSpecificInferencePointArray[0], mSpecificInferencePointArray[1])); imgPoints.add(new Point(mSpecificInferencePointArray[2], mSpecificInferencePointArray[3])); imgPoints.add(new Point(mSpecificInferencePointArray[4], mSpecificInferencePointArray[5])); imgPoints.add(new Point(mSpecificInferencePointArray[6], mSpecificInferencePointArray[7])); imgPoints.add(new Point(mSpecificInferencePointArray[8], mSpecificInferencePointArray[9])); mImagePoints.fromList(imgPoints);

mObjectPoints = new MatOfPoint3f();

List<point3> objPoints = new ArrayList<point3>(); objPoints.add(new Point3(-22.20, -66.559, -28.726)); objPoints.add(new Point3(15.55, -68.66, -28.174)); objPoints.add(new Point3(-5.97, -84.487, -64.864)); objPoints.add(new Point3(-26.322, -50.606, -97.192)); objPoints.add(new Point3(23.032, -48.908, -96.501)); mObjectPoints.fromList(objPoints);

Mat rvec = new Mat(3,1, CvType.CV_64FC1);
Mat tvec = new Mat(3, 1, CvType.CV_64FC1);

Calib3d.solvePnP(mObjectPoints, mImagePoints, mCameraMatrix, null, rvec, tvec);

When I call Calib3d.solvePnP, the App crash.

The 3D and 2D points do not have correspondence and the camera intrinsic parameters are not real. I set the value to fx, fy, cx and cy. But I think the App should not crash even given simulated inputs.

Any help is very appreciated.

Best,

YL

App crash when using solvePnP on Android

Hi, I use OpenCV on Andoid. I can use it for face detection. But when I use it for solvePnp, the app crash. The code looks as follows:

 Mat mCameraMatrix = new Mat(3, 3, CvType.CV_64FC1);
//assign values to mCameraMatrix, not real calibration results

results mImagePoints = new MatOfPoint2f();

List<point> MatOfPoint2f(); List<Point> imgPoints = new ArrayList<point>(); ArrayList<Point>(); imgPoints.add(new Point(mSpecificInferencePointArray[0], mSpecificInferencePointArray[1])); imgPoints.add(new Point(mSpecificInferencePointArray[2], mSpecificInferencePointArray[3])); imgPoints.add(new Point(mSpecificInferencePointArray[4], mSpecificInferencePointArray[5])); imgPoints.add(new Point(mSpecificInferencePointArray[6], mSpecificInferencePointArray[7])); imgPoints.add(new Point(mSpecificInferencePointArray[8], mSpecificInferencePointArray[9])); mImagePoints.fromList(imgPoints);

mImagePoints.fromList(imgPoints); mObjectPoints = new MatOfPoint3f();

List<point3> MatOfPoint3f(); List<Point3> objPoints = new ArrayList<point3>(); ArrayList<Point3>(); objPoints.add(new Point3(-22.20, -66.559, -28.726)); objPoints.add(new Point3(15.55, -68.66, -28.174)); objPoints.add(new Point3(-5.97, -84.487, -64.864)); objPoints.add(new Point3(-26.322, -50.606, -97.192)); objPoints.add(new Point3(23.032, -48.908, -96.501)); mObjectPoints.fromList(objPoints);

mObjectPoints.fromList(objPoints);
Mat rvec = new Mat(3,1, CvType.CV_64FC1);
 Mat tvec = new Mat(3, 1, CvType.CV_64FC1);
 Calib3d.solvePnP(mObjectPoints, mImagePoints, mCameraMatrix, null, rvec, tvec);
When I call Calib3d.solvePnP, the App crash.

The 3D and 2D points do not have correspondence and the camera intrinsic parameters are not real. I set the value to fx, fy, cx and cy. But I think the App should not crash even given simulated inputs.

Any help is very appreciated.

Best,

YL