zoukankan      html  css  js  c++  java
  • 深度学习图像扩增

    水平翻转(标注翻转):
    def random_horizontal_flip(image, bboxes):
        _, w, _ = image.shape
        # [::-1] 顺序相反操作
        # a = [1, 2, 3, 4, 5]
        # a[::-1]
        # Out[3]: [5, 4, 3, 2, 1]
        image = image[:, ::-1, :]
        bboxes[:, [0, 2]] = w - bboxes[:, [2, 0]]
        return image, bboxes
    bbox = np.array([[ 48 240 195 371  14]])
    image = np.array(cv2.imread("000001.jpg"))
    image1, bboxes = random_horizontal_flip(image.copy(), bbox.copy())
    cv2.namedWindow('0',0)
    cv2.imshow('0',image1)
    cv2.waitKey(0)
    

      

    #随机裁剪
    def random_crop(image, bboxes):
        h, w, _ = image.shape
        max_bbox = np.concatenate([np.min(bboxes[:, 0:2], axis=0), np.max(bboxes[:, 2:4], axis=0)], axis=-1)
        max_l_trans = max_bbox[0]
        max_u_trans = max_bbox[1]
        max_r_trans = w - max_bbox[2]
        max_d_trans = h - max_bbox[3]
        crop_xmin = max(0, int(max_bbox[0] - random.uniform(0, max_l_trans)))
        crop_ymin = max(0, int(max_bbox[1] - random.uniform(0, max_u_trans)))
        crop_xmax = max(w, int(max_bbox[2] + random.uniform(0, max_r_trans)))
        crop_ymax = max(h, int(max_bbox[3] + random.uniform(0, max_d_trans)))
        image = image[crop_ymin : crop_ymax, crop_xmin : crop_xmax]
        bboxes[:, [0, 2]] = bboxes[:, [0, 2]] - crop_xmin
        bboxes[:, [1, 3]] = bboxes[:, [1, 3]] - crop_ymin
        return image, bboxes
    

     

    #随机选转
    def random_translate(self, image, bboxes):
     
            if random.random() < 0.5:
                h, w, _ = image.shape
                max_bbox = np.concatenate([np.min(bboxes[:, 0:2], axis=0), np.max(bboxes[:, 2:4], axis=0)], axis=-1)
     
                max_l_trans = max_bbox[0]
                max_u_trans = max_bbox[1]
                max_r_trans = w - max_bbox[2]
                max_d_trans = h - max_bbox[3]
     
                tx = random.uniform(-(max_l_trans - 1), (max_r_trans - 1))
                ty = random.uniform(-(max_u_trans - 1), (max_d_trans - 1))
     
                M = np.array([[1, 0, tx], [0, 1, ty]])
                image = cv2.warpAffine(image, M, (w, h))
     
                bboxes[:, [0, 2]] = bboxes[:, [0, 2]] + tx
                bboxes[:, [1, 3]] = bboxes[:, [1, 3]] + ty
     
            return image, bboxes
    

      

     

  • 相关阅读:
    20201031
    20201028
    20201026
    20201027
    20201020
    ReentrantReadWriteLock原理分析
    java中Thread源码介绍
    CountDownLatch原理分析
    Semaphore原理分析
    AQS-共享模式分析
  • 原文地址:https://www.cnblogs.com/lzq116/p/12167099.html
Copyright © 2011-2022 走看看