日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

收缩分割多边形(PSENet中有使用)

發布時間:2024/7/23 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 收缩分割多边形(PSENet中有使用) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目的:為了解決密集文本的分割問題

代碼:

# -*- coding=utf-8 -*- import os import cv2 import Polygon as plg import pyclipper import numpy as npdef dist(a, b):return np.sqrt(np.sum((a - b) ** 2))#計算周長 def perimeter(bbox):peri = 0.0for i in range(bbox.shape[0]):# print('==bbox[i], bbox[i + 1]:', bbox[i], bbox[(i + 1) % bbox.shape[0]])peri += dist(bbox[i], bbox[(i + 1) % bbox.shape[0]])return peridef shrink(bboxes, rate, max_shr=20):rate = rate * rateshrinked_bboxes = []for bbox in bboxes:area = plg.Polygon(bbox).area()print('===bbox:', bbox)peri = perimeter(bbox)pco = pyclipper.PyclipperOffset()pco.AddPath(bbox, pyclipper.JT_ROUND, pyclipper.ET_CLOSEDPOLYGON)offset = min((int)(area * (1 - rate) / (peri + 0.001) + 0.5), max_shr)shrinked_bbox = pco.Execute(-offset)if len(shrinked_bbox) == 0:shrinked_bboxes.append(bbox)continueshrinked_bbox = np.array(shrinked_bbox)[0]if shrinked_bbox.shape[0] <= 2:shrinked_bboxes.append(bbox)continueshrinked_bboxes.append(shrinked_bbox)return shrinked_bboxes # np.array(shrinked_bboxes)def main(shrink_threshold=0.9):img_path = './src_imgs/img_43.jpg'label_path = './labels_txt/img_43.txt'img = cv2.imread(img_path)H, W, _ = img.shapewith open(label_path, 'r') as f:label_lines = f.readlines()f.close()gt_boxes = []for line in label_lines:line = line.strip().strip('\ufeff').strip('\xef\xbb\xbf')# print('===line:', line)box_points = [int(float(item)) for item in line.split(',')[:-1]]box_info = np.array(box_points).reshape((-1, 2))# print('===box_info:', box_info)gt_boxes.append(box_info)ori_mask_img = np.zeros((H, W))for box in gt_boxes:cv2.fillPoly(ori_mask_img, [box], (255))cv2.imwrite('./ori_mask_img.jpg', ori_mask_img)shrink_mask_img = np.zeros((H, W))new_gt_boxes = shrink(gt_boxes, shrink_threshold)for box in new_gt_boxes:cv2.fillPoly(shrink_mask_img, [box], (100))cv2.imwrite('./shrink_mask_img.jpg', shrink_mask_img)if __name__ == "__main__":main(shrink_threshold=0.6)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.原圖

? ??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.原先分割圖? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 3.收縮后分割圖

總結

以上是生活随笔為你收集整理的收缩分割多边形(PSENet中有使用)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。