diff --git a/opensfm/exif.py b/opensfm/exif.py index 2205007a8..6b0a67dc7 100644 --- a/opensfm/exif.py +++ b/opensfm/exif.py @@ -592,7 +592,13 @@ def extract_opk(self, geo: Dict[str, Any]) -> Optional[Dict[str, Any]]: # Unit vector pointing north xnp /= m - znp = np.array([0, 0, -1]).T + # Unit vector pointing up and perpendicular to north(xnp) + znp = p1 + znp -= znp.dot(xnp) * xnp + m = np.linalg.norm(znp) + if m == 0: + logger.debug("Cannot compute OPK angles, divider = 0") + return ynp = np.cross(znp, xnp) cen = np.array([xnp, ynp, znp]).T