Python cv2.rotatedRectangleIntersection() Examples
The following are 7
code examples of cv2.rotatedRectangleIntersection().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
cv2
, or try the search function
.
Example #1
Source File: losses_win.py From R3Det_Tensorflow with MIT License | 6 votes |
def iou_rotate_calculate2(boxes1, boxes2): ious = [] if boxes1.shape[0] != 0: area1 = boxes1[:, 2] * boxes1[:, 3] area2 = boxes2[:, 2] * boxes2[:, 3] for i in range(boxes1.shape[0]): temp_ious = [] r1 = ((boxes1[i][0], boxes1[i][1]), (boxes1[i][2], boxes1[i][3]), boxes1[i][4]) r2 = ((boxes2[i][0], boxes2[i][1]), (boxes2[i][2], boxes2[i][3]), boxes2[i][4]) int_pts = cv2.rotatedRectangleIntersection(r1, r2)[1] if int_pts is not None: order_pts = cv2.convexHull(int_pts, returnPoints=True) int_area = cv2.contourArea(order_pts) inter = int_area * 1.0 / (area1[i] + area2[i] - int_area) temp_ious.append(inter) else: temp_ious.append(0.0) ious.append(temp_ious) return np.array(ious, dtype=np.float32)
Example #2
Source File: iou.py From DBNet.pytorch with Apache License 2.0 | 6 votes |
def iou_rotate(box_a, box_b, method='union'): rect_a = cv2.minAreaRect(box_a) rect_b = cv2.minAreaRect(box_b) r1 = cv2.rotatedRectangleIntersection(rect_a, rect_b) if r1[0] == 0: return 0 else: inter_area = cv2.contourArea(r1[1]) area_a = cv2.contourArea(box_a) area_b = cv2.contourArea(box_b) union_area = area_a + area_b - inter_area if union_area == 0 or inter_area == 0: return 0 if method == 'union': iou = inter_area / union_area elif method == 'intersection': iou = inter_area / min(area_a, area_b) else: raise NotImplementedError return iou
Example #3
Source File: nms_rotate.py From R2CNN_Faster-RCNN_Tensorflow with MIT License | 5 votes |
def nms_rotate_cpu(boxes, scores, iou_threshold, max_output_size): keep = [] order = scores.argsort()[::-1] num = boxes.shape[0] suppressed = np.zeros((num), dtype=np.int) for _i in range(num): if len(keep) >= max_output_size: break i = order[_i] if suppressed[i] == 1: continue keep.append(i) r1 = ((boxes[i, 0], boxes[i, 1]), (boxes[i, 2], boxes[i, 3]), boxes[i, 4]) area_r1 = boxes[i, 2] * boxes[i, 3] for _j in range(_i + 1, num): j = order[_j] if suppressed[i] == 1: continue r2 = ((boxes[j, 0], boxes[j, 1]), (boxes[j, 2], boxes[j, 3]), boxes[j, 4]) area_r2 = boxes[j, 2] * boxes[j, 3] inter = 0.0 int_pts = cv2.rotatedRectangleIntersection(r1, r2)[1] if int_pts is not None: order_pts = cv2.convexHull(int_pts, returnPoints=True) int_area = cv2.contourArea(order_pts) inter = int_area * 1.0 / (area_r1 + area_r2 - int_area + cfgs.EPSILON) if inter >= iou_threshold: suppressed[j] = 1 return np.array(keep, np.int64)
Example #4
Source File: nms_rotate.py From remote_sensing_object_detection_2019 with MIT License | 5 votes |
def nms_rotate_cpu(boxes, scores, iou_threshold, max_output_size): keep = [] order = scores.argsort()[::-1] num = boxes.shape[0] suppressed = np.zeros((num), dtype=np.int) for _i in range(num): if len(keep) >= max_output_size: break i = order[_i] if suppressed[i] == 1: continue keep.append(i) r1 = ((boxes[i, 0], boxes[i, 1]), (boxes[i, 2], boxes[i, 3]), boxes[i, 4]) area_r1 = boxes[i, 2] * boxes[i, 3] for _j in range(_i + 1, num): j = order[_j] if suppressed[i] == 1: continue r2 = ((boxes[j, 0], boxes[j, 1]), (boxes[j, 2], boxes[j, 3]), boxes[j, 4]) area_r2 = boxes[j, 2] * boxes[j, 3] inter = 0.0 int_pts = cv2.rotatedRectangleIntersection(r1, r2)[1] if int_pts is not None: order_pts = cv2.convexHull(int_pts, returnPoints=True) int_area = cv2.contourArea(order_pts) inter = int_area * 1.0 / (area_r1 + area_r2 - int_area + cfgs.EPSILON) if inter >= iou_threshold: suppressed[j] = 1 return np.array(keep, np.int64)
Example #5
Source File: nms_rotate.py From R2CNN-Plus-Plus_Tensorflow with MIT License | 4 votes |
def nms_rotate_cpu(boxes, scores, iou_threshold, max_output_size): keep = [] order = scores.argsort()[::-1] num = boxes.shape[0] suppressed = np.zeros((num), dtype=np.int) for _i in range(num): if len(keep) >= max_output_size: break i = order[_i] if suppressed[i] == 1: continue keep.append(i) r1 = ((boxes[i, 0], boxes[i, 1]), (boxes[i, 2], boxes[i, 3]), boxes[i, 4]) area_r1 = boxes[i, 2] * boxes[i, 3] for _j in range(_i + 1, num): j = order[_j] if suppressed[i] == 1: continue r2 = ((boxes[j, 0], boxes[j, 1]), (boxes[j, 2], boxes[j, 3]), boxes[j, 4]) area_r2 = boxes[j, 2] * boxes[j, 3] inter = 0.0 try: int_pts = cv2.rotatedRectangleIntersection(r1, r2)[1] if int_pts is not None: order_pts = cv2.convexHull(int_pts, returnPoints=True) int_area = cv2.contourArea(order_pts) inter = int_area * 1.0 / (area_r1 + area_r2 - int_area + cfgs.EPSILON) except: """ cv2.error: /io/opencv/modules/imgproc/src/intersection.cpp:247: error: (-215) intersection.size() <= 8 in function rotatedRectangleIntersection """ # print(r1) # print(r2) inter = 0.9999 if inter >= iou_threshold: suppressed[j] = 1 return np.array(keep, np.int64)
Example #6
Source File: nms_rotate.py From R3Det_Tensorflow with MIT License | 4 votes |
def nms_rotate_cpu(boxes, scores, iou_threshold, max_output_size): keep = [] order = scores.argsort()[::-1] num = boxes.shape[0] suppressed = np.zeros((num), dtype=np.int) for _i in range(num): if len(keep) >= max_output_size: break i = order[_i] if suppressed[i] == 1: continue keep.append(i) r1 = ((boxes[i, 0], boxes[i, 1]), (boxes[i, 2], boxes[i, 3]), boxes[i, 4]) area_r1 = boxes[i, 2] * boxes[i, 3] for _j in range(_i + 1, num): j = order[_j] if suppressed[i] == 1: continue r2 = ((boxes[j, 0], boxes[j, 1]), (boxes[j, 2], boxes[j, 3]), boxes[j, 4]) area_r2 = boxes[j, 2] * boxes[j, 3] inter = 0.0 try: int_pts = cv2.rotatedRectangleIntersection(r1, r2)[1] if int_pts is not None: order_pts = cv2.convexHull(int_pts, returnPoints=True) int_area = cv2.contourArea(order_pts) inter = int_area * 1.0 / (area_r1 + area_r2 - int_area + cfgs.EPSILON) except: """ cv2.error: /io/opencv/modules/imgproc/src/intersection.cpp:247: error: (-215) intersection.size() <= 8 in function rotatedRectangleIntersection """ # print(r1) # print(r2) inter = 0.9999 if inter >= iou_threshold: suppressed[j] = 1 return np.array(keep, np.int64)
Example #7
Source File: nms_rotate.py From RetinaNet_Tensorflow_Rotation with MIT License | 4 votes |
def nms_rotate_cpu(boxes, scores, iou_threshold, max_output_size): keep = [] order = scores.argsort()[::-1] num = boxes.shape[0] suppressed = np.zeros((num), dtype=np.int) for _i in range(num): if len(keep) >= max_output_size: break i = order[_i] if suppressed[i] == 1: continue keep.append(i) r1 = ((boxes[i, 0], boxes[i, 1]), (boxes[i, 2], boxes[i, 3]), boxes[i, 4]) area_r1 = boxes[i, 2] * boxes[i, 3] for _j in range(_i + 1, num): j = order[_j] if suppressed[i] == 1: continue r2 = ((boxes[j, 0], boxes[j, 1]), (boxes[j, 2], boxes[j, 3]), boxes[j, 4]) area_r2 = boxes[j, 2] * boxes[j, 3] inter = 0.0 try: int_pts = cv2.rotatedRectangleIntersection(r1, r2)[1] if int_pts is not None: order_pts = cv2.convexHull(int_pts, returnPoints=True) int_area = cv2.contourArea(order_pts) inter = int_area * 1.0 / (area_r1 + area_r2 - int_area + cfgs.EPSILON) except: """ cv2.error: /io/opencv/modules/imgproc/src/intersection.cpp:247: error: (-215) intersection.size() <= 8 in function rotatedRectangleIntersection """ # print(r1) # print(r2) inter = 0.9999 if inter >= iou_threshold: suppressed[j] = 1 return np.array(keep, np.int64)