栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

数据增强:贴图

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据增强:贴图

做目标检测时,当类别数量不均衡时,就会用到背景贴上目标的方法来均衡类别样本;当你的标签是多坐标点标注的多边形标签(类似ocr中的文字区域检测标签)

def get_polygon_point(point_str):
    #point_str类似'1,2,3,4,5,6'转换为[[1,2],[3,4],[5,6]]
    point_str_list = list(map(int, point_str.split(',')))
    point_list = []


    for i in range(int(len(point_str_list)*0.5)):
        point_ = [point_str_list[i*2], point_str_list[i*2+1]]

        point_list.append(point_)

    return point_list

import numpy as np
if __name__=='__main__':
    I = np.zeros((h, w, 3), dtype=np.uint8)
    h_, w_ = I.shape[:2]
    points = get_polygon_point(point)
    points = np.array(points, dtype=np.int32)
    # pts = points.reshape((-1, 1, 2))
    # cv2.polylines(pic, pts, True, (98, 9, 11), 10)
    I = cv2.fillPoly(I, [points], color=(1, 1, 1))#生成模板
    
    pic = pic * I #这样就去除了背景,只留下前景目标
    #for i in range(h):
        #for j in range(w):
            # 获取原始图像
            #B = pic[i, j][0]
            #G = pic[i, j][1]
            #R = pic[i, j][2]
            #if B == 255 and G == 0 and R == 0:
                #pass
            #else:
                #pic_new[i, j] = np.uint8((0, 0, 0))

原图:

处理后的图片:(只留下充电器插头)

整体处理思路:

step1:将多边性包裹的目标按照最小的box坐标(voc格式坐标)裁剪出来,并记录裁剪后的多边形坐标;

step2:挑选合适的背景图,并在背景图合适的位置裁剪一块和step1中大小相同的背景小区域,使用掩膜方式,将其和目标图融合;

step3:将step2中融合后的图片放回至背景图当中,注意和step2中扣取的坐标一致; 

利用opencv-python绘制多边形框或(半透明)区域填充(可用于分割任务mask可视化)_Adenialzz的博客-CSDN博客

opencv之绘制多边形----cv2.polylines, cv2.fillPoly_ancy的博客-CSDN博客

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/467670.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号