class_docstr: The post process for Differentiable Binarization (DB).
class_docstr_tok: ["The","post","process","for","Differentiable","Binarization","(","DB",")","."]
docstr: _bitmap: single map with shape (1, H, W),
          whose values are binarized as {0, 1}
docstr_tok: ["_bitmap",":","single","map","with","shape","(","1",",","H",",","W",")",",","whose","values","are","binarized","as","{","0",",","1","}"]
code: def boxes_from_bitmap(self, pred, _bitmap, dest_width, dest_height):
      """
      _bitmap: single map with shape (1, H, W),
              whose values are binarized as {0, 1}
      """
  
      bitmap = _bitmap
      height, width = bitmap.shape
  
      outs = cv2.findContours(
          (bitmap * 255).astype(np.uint8),
          cv2.RETR_LIST,
          cv2.CHAIN_APPROX_SIMPLE,
      )
      if len(outs) == 3:
          img, contours, _ = outs[0], outs[1], outs[2]
      elif len(outs) == 2:
          contours, _ = outs[0], outs[1]
  
      num_contours = min(len(contours), self.max_candidates)
  
      boxes = []
      scores = []
      for index in range(num_contours):
          contour = contours[index]
          points, sside = self.get_mini_boxes(contour)
          if sside < self.min_size:
              continue
          points = np.array(points)
          if self.score_mode == "fast":
              score = self.box_score_fast(pred, points.reshape(-1, 2))
          else:
              score = self.box_score_slow(pred, contour)
          if self.box_thresh > score:
              continue
  
          box = self.unclip(points).reshape(-1, 1, 2)
          box, sside = self.get_mini_boxes(box)
          if sside < self.min_size + 2:
              continue
          box = np.array(box)
  
          box[:, 0] = np.clip(
              np.round(box[:, 0] / width * dest_width), 0, dest_width
          )
          box[:, 1] = np.clip(
              np.round(box[:, 1] / height * dest_height), 0, dest_height
          )
          boxes.append(box.astype(np.int16))
          scores.append(score)
      return np.array(boxes, dtype=np.int16), scores
  
imports: import numpy
  import paddle
  from paddle.nn import functional
  import re
  from shapely.geometry import Polygon
  import cv2
  import copy
label_desc: Use image node_id 2 for calling the DBPostProcess obj's underlying member method code with example usage: obj.boxes_from_bitmap(pred, _bitmap, dest_width, dest_height) and returns: np,  scores