Python cv2.CC_STAT_WIDTH Examples
The following are 2
code examples of cv2.CC_STAT_WIDTH().
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: detect_by_simple_dense_optical_flow.py From open_model_zoo with Apache License 2.0 | 5 votes |
def _convert_connection_components(retval, labels, stats, centroids, original_mask): assert np.amax(labels) == retval - 1 connected_components = [None] * retval for i in range(retval): mask = np.array(labels == i, dtype=np.uint8) stat_for_label = stats[i] stat_left = stat_for_label[cv2.CC_STAT_LEFT] stat_top = stat_for_label[cv2.CC_STAT_TOP] stat_width = stat_for_label[cv2.CC_STAT_WIDTH] stat_height = stat_for_label[cv2.CC_STAT_HEIGHT] rect = Rect(stat_left, stat_top, stat_width, stat_height) centr = centroids[i] area = _get_area_rect(rect) num = int(np.sum(original_mask[mask == 1])) if area > labels.shape[0] * labels.shape[1] / 16: log.debug("_convert_connection_components: i = {}".format(i)) log.debug("_convert_connection_components: rect = {}".format(rect)) log.debug("_convert_connection_components: centr = {}".format(centr)) log.debug("_convert_connection_components: area = {}".format(area)) log.debug("_convert_connection_components: num = {}".format(num)) component = ConnectedComponent(label_id=i, mask=mask, centroid=centr, rect=rect, area=area, num=num) connected_components[i] = component return connected_components
Example #2
Source File: craft_utils.py From CRAFT-pytorch with MIT License | 4 votes |
def getDetBoxes_core(textmap, linkmap, text_threshold, link_threshold, low_text): # prepare data linkmap = linkmap.copy() textmap = textmap.copy() img_h, img_w = textmap.shape """ labeling method """ ret, text_score = cv2.threshold(textmap, low_text, 1, 0) ret, link_score = cv2.threshold(linkmap, link_threshold, 1, 0) text_score_comb = np.clip(text_score + link_score, 0, 1) nLabels, labels, stats, centroids = cv2.connectedComponentsWithStats(text_score_comb.astype(np.uint8), connectivity=4) det = [] mapper = [] for k in range(1,nLabels): # size filtering size = stats[k, cv2.CC_STAT_AREA] if size < 10: continue # thresholding if np.max(textmap[labels==k]) < text_threshold: continue # make segmentation map segmap = np.zeros(textmap.shape, dtype=np.uint8) segmap[labels==k] = 255 segmap[np.logical_and(link_score==1, text_score==0)] = 0 # remove link area x, y = stats[k, cv2.CC_STAT_LEFT], stats[k, cv2.CC_STAT_TOP] w, h = stats[k, cv2.CC_STAT_WIDTH], stats[k, cv2.CC_STAT_HEIGHT] niter = int(math.sqrt(size * min(w, h) / (w * h)) * 2) sx, ex, sy, ey = x - niter, x + w + niter + 1, y - niter, y + h + niter + 1 # boundary check if sx < 0 : sx = 0 if sy < 0 : sy = 0 if ex >= img_w: ex = img_w if ey >= img_h: ey = img_h kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(1 + niter, 1 + niter)) segmap[sy:ey, sx:ex] = cv2.dilate(segmap[sy:ey, sx:ex], kernel) # make box np_contours = np.roll(np.array(np.where(segmap!=0)),1,axis=0).transpose().reshape(-1,2) rectangle = cv2.minAreaRect(np_contours) box = cv2.boxPoints(rectangle) # align diamond-shape w, h = np.linalg.norm(box[0] - box[1]), np.linalg.norm(box[1] - box[2]) box_ratio = max(w, h) / (min(w, h) + 1e-5) if abs(1 - box_ratio) <= 0.1: l, r = min(np_contours[:,0]), max(np_contours[:,0]) t, b = min(np_contours[:,1]), max(np_contours[:,1]) box = np.array([[l, t], [r, t], [r, b], [l, b]], dtype=np.float32) # make clock-wise order startidx = box.sum(axis=1).argmin() box = np.roll(box, 4-startidx, 0) box = np.array(box) det.append(box) mapper.append(k) return det, labels, mapper