Unverified Commit 03d01641 authored by Li Bin's avatar Li Bin Committed by GitHub
Browse files

[Fix] Fix AttributeError: 'LineString' object has no attribute 'exterior' (#2557)

* Fix bug: AttributeError: 'LineString' object has no attribute 'exterior'

* fixed linter

* fixed linter

* fix linter issue wit isort
parent b5a706d4
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
import copy import copy
import warnings
from typing import List, Optional, Tuple, Union from typing import List, Optional, Tuple, Union
import numpy as np import numpy as np
...@@ -7,6 +8,7 @@ from nuscenes import NuScenes ...@@ -7,6 +8,7 @@ from nuscenes import NuScenes
from nuscenes.utils.geometry_utils import view_points from nuscenes.utils.geometry_utils import view_points
from pyquaternion import Quaternion from pyquaternion import Quaternion
from shapely.geometry import MultiPoint, box from shapely.geometry import MultiPoint, box
from shapely.geometry.polygon import Polygon
from mmdet3d.structures import Box3DMode, CameraInstance3DBoxes, points_cam2img from mmdet3d.structures import Box3DMode, CameraInstance3DBoxes, points_cam2img
from mmdet3d.structures.ops import box_np_ops from mmdet3d.structures.ops import box_np_ops
...@@ -358,15 +360,17 @@ def post_process_coords( ...@@ -358,15 +360,17 @@ def post_process_coords(
if polygon_from_2d_box.intersects(img_canvas): if polygon_from_2d_box.intersects(img_canvas):
img_intersection = polygon_from_2d_box.intersection(img_canvas) img_intersection = polygon_from_2d_box.intersection(img_canvas)
if isinstance(img_intersection, Polygon):
intersection_coords = np.array( intersection_coords = np.array(
[coord for coord in img_intersection.exterior.coords]) [coord for coord in img_intersection.exterior.coords])
min_x = min(intersection_coords[:, 0]) min_x = min(intersection_coords[:, 0])
min_y = min(intersection_coords[:, 1]) min_y = min(intersection_coords[:, 1])
max_x = max(intersection_coords[:, 0]) max_x = max(intersection_coords[:, 0])
max_y = max(intersection_coords[:, 1]) max_y = max(intersection_coords[:, 1])
return min_x, min_y, max_x, max_y return min_x, min_y, max_x, max_y
else:
warnings.warn('img_intersection is not an object of Polygon.')
return None
else: else:
return None return None
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment